大佬教程收集整理的这篇文章主要介绍了在golang中封装日志设置的正确模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
package main import ( "io" "log" "os" ) func SetupLogging() { logFile,err := os.OpenFile("test.log",os.O_APPEND|os.O_CREATE,0666) if err != nil { log.Panicln(err) } defer logFile.Close() log.SetOutput(io.MultiWriter(os.Stderr,logFilE)) } func main() { SetupLogging() log.Println("Test message") }
显然是不起作用,因为defer在SetupLogging函数结束时关闭日志文件.
下面的一个工作示例添加了额外的代码,如果在较大的应用程序中重复作为模式,IMHO会失去一些清晰度:
package main import ( "io" "log" "os" ) func SetupLogging() *os.File { logFile,0666) if err != nil { log.Panicln(err) } log.SetOutput(io.MultiWriter(os.Stderr,logFilE)) return logFile } func main() { logf := SetupLogging() defer logf.Close() log.Println("Test message") }
package main import ( "fmt" "io" "log" "os" ) func LogSetupAndDestruct() func() { logFile,os.O_CREATE|os.O_APPEND|os.O_RDWR,logFilE)) return func() { e := logFile.Close() if e != nil { fmt.Fprintf(os.Stderr,"Problem closing the log file: %s\n",E) } } } func main() { defer LogSetupAndDestruct()() log.Println("Test message") }
使用这种@L_616_13@的更详细的公开示例在Viper代码中:here is the return from a test initializer和here it is used to encapsulate the cleanup logic and objects
以上是大佬教程为你收集整理的在golang中封装日志设置的正确模式全部内容,希望文章能够帮你解决在golang中封装日志设置的正确模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。