0
標準log
Go中的軟件包不支持與Python中的logging
標準庫不同的級別。Golang日誌策略
許多軟件包訴諸第三方日誌包,如glog
或logrus
。
當導入可能使用或不使用第三方日誌軟件包的第三方軟件包時,什麼是Go的最佳日誌記錄策略。
標準log
Go中的軟件包不支持與Python中的logging
標準庫不同的級別。Golang日誌策略
許多軟件包訴諸第三方日誌包,如glog
或logrus
。
當導入可能使用或不使用第三方日誌軟件包的第三方軟件包時,什麼是Go的最佳日誌記錄策略。
所以,我覺得你問,如果有什麼我使用用途老式https://golang.org/pkg/log/和我的主包一個包使用一些特別的東西,像log.Info
,log.Warn
,log.Error
,並log.Debug
?
如果包公開log.Logger
對象給你,你可以使用SetFlags
,SetOutput
,SetPrefix
改變什麼的日誌信息是什麼樣子,或者完全讓他們保持沉默,但你不能讓他們發揮好與您的特殊三階第三方日誌包。
例如,如果一個第三部分包看起來是這樣的:
package sayhello
import (
"log"
"os"
)
type SayHello {
Logger *log.Logger
}
func NewSayHello() (SayHello) {
logger, _ := os.OpenFile("/tmp/tmp.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
var sh SayHello
sh.Logger = log.New(logger, "SAY HELLO LOGGER: ", log.Ldate|log.Ltime|log.Lshortfile)
return sh
}
func (sh SayHello) Run() {
sh.Logger.Println("Hello. I ran!")
}
然後,我可以沉默是這樣的:
package main
import (
"sayhello"
"io/ioutil"
)
func main() {
sh := sayhello.NewSayHello()
sh.Run()
// output is: 2016/08/10 16:47:46 SAY HELLO LOGGER: Hello. I ran!
sh.Logger.SetOutput(ioutil.Discard)
sh.Run()
// output is nothing
}
但真的沒有辦法可以翻譯另一個包日誌報表像log.Println
在一個類似log.Info
或log.Debug
,這是你在找什麼。
你在問什麼? – Plato