亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以將所有控制臺日志定向到文件嗎?

我們可以將所有控制臺日志定向到文件嗎?

Go
函數式編程 2021-09-27 10:48:13
使用命令在本地運行 Web 應用程序時go run MainPackageFile.go我們可以映射記錄器,例如用馬提尼m := martini.Classic()m.Get("/m", func() string {  return "Hello world!"})m.Map(log.New(f, "[martini]", log.LstdFlags))但是,如果代碼之外有什么問題怎么辦,例如 Go 無法下載包等……有沒有辦法獲取這些 Go 運行時日志?在本地運行時,錯誤將打印到控制臺上。有沒有辦法在服務器中運行時,我們可以將所有這些日志寫入文本文件?
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

假設您的代碼使用日志庫在任何地方報告錯誤,您可以更改默認記錄器寫入的文件,而不是定義您自己的日志對象并將其傳遞。這是通過日志庫的SetOutput()函數完成的。


這樣,以下代碼只會寫入您的日志文件而不是標準錯誤:


// Call this when your program starts and pass it the file handle for your

// log file.

func SetupErrorLog(logFile io.Writer) {

    log.SetOutput(logFile)

}


...


func DoSomething() {

    ...

    if err != nil {

       // prints to your log file and exits

       log.Fatalln("A fatal error has occurred:", err)

   }

}

如果您沒有統一使用日志庫并且想要捕獲所有輸出(如恐慌),則接受的答案有效。但是,我更喜歡一種更簡單的方法,而不會通過在調用程序時使用記錄器之類的工具來使代碼復雜化:


go run MainPackageFile.go 2>&1 | logger

這會將您程序的所有輸出發送到 syslog,而不必弄亂您的代碼。logger 命令有許多選項來自定義日志記錄行為,包括選擇您自己的日志文件的能力。閱讀記錄器手冊頁以獲取更多信息。


記錄器命令在 Unix 系統(包括 Mac)上可用。Windows 解決方案可能略有不同。


查看完整回答
反對 回復 2021-09-27
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

假設您的代碼使用日志庫在任何地方報告錯誤,您可以更改默認記錄器寫入的文件,而不是定義您自己的日志對象并將其傳遞。這是通過日志庫的SetOutput()函數完成的。


這樣,以下代碼只會寫入您的日志文件而不是標準錯誤:


// Call this when your program starts and pass it the file handle for your

// log file.

func SetupErrorLog(logFile io.Writer) {

    log.SetOutput(logFile)

}


...


func DoSomething() {

    ...

    if err != nil {

       // prints to your log file and exits

       log.Fatalln("A fatal error has occurred:", err)

   }

}

如果您沒有統一使用日志庫并且想要捕獲所有輸出(如恐慌),則接受的答案有效。但是,我更喜歡一種更簡單的方法,而不會通過在調用程序時使用記錄器之類的工具來使代碼復雜化:


go run MainPackageFile.go 2>&1 | logger

這會將您程序的所有輸出發送到 syslog,而不必弄亂您的代碼。logger 命令有許多選項來自定義日志記錄行為,包括選擇您自己的日志文件的能力。閱讀記錄器手冊頁以獲取更多信息。


記錄器命令在 Unix 系統(包括 Mac)上可用。Windows 解決方案可能略有不同。


查看完整回答
反對 回復 2021-09-27
  • 2 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號