您的位置:首页 > 科技 > IT业 > Go语言log库学习

Go语言log库学习

2024/12/25 23:54:12 来源:https://blog.csdn.net/qq_53517370/article/details/140944916  浏览:    关键词:Go语言log库学习

文章目录

    • 日志记录
    • Testing

日志记录

log库:https://go-zh.org/pkg/log/
syslog:https://go-zh.org/pkg/log/syslog/

  1. 基本的日志功能:支持日志消息的输出,包括通过log.Printlog.Printflog.Println等函数记录普通日志,以及通过log.Fatallog.Fatalflog.Fatallnlog.Paniclog.Panicflog.Panicln等函数在记录日志后执行特定操作(如程序终止或panic)。
  2. 日志输出位置:默认情况下,log包的日志输出位置是标准错误输出(stderr)。但可以通过log.SetOutput函数将日志输出重定向到其他位置,如文件或自定义的日志处理器。
  3. 日志格式和前缀:支持自定义日志消息的前缀和时间格式。通过log.SetPrefix函数可以设置日志消息的前缀,通过log.SetFlags函数可以设置时间格式,如日期、时间、微秒级时间、文件名和行号等。
  4. 并发安全log包本身是并发安全的,可以在多个goroutine中安全地使用。
func main() {  file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)  if err != nil {  log.Fatal(err)  }  defer file.Close()  // 输出到文件  log.SetOutput(file)  log.Println("This is a log message written to a file")  // 自定义格式log.SetPrefix("INFO: ")  log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)  log.Println("This is a log message with custom prefix and flags")  
}
// 不支持同时输出到文件且输出到控制台
// 所以可以这样做:
package mainimport ("log""os"
)// 测试log同时写入控制台和文件func multiLogger(fileLogger, stdLogger *log.Logger, msg string) {fileLogger.Println(msg)stdLogger.Println(msg)
}func main() {logFile, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)defer logFile.Close()// 创建一个新的logger实例,用于向文件写入日志fileLogger := log.New(logFile, "FILE: ", log.Ldate|log.Ltime|log.Lshortfile)// 使用标准库logger作为控制台输出consoleLogger := log.New(os.Stdout, "CONSOLE: ", log.Ldate|log.Ltime|log.Lshortfile)// 输出var msg string = "测试log同时写入控制台和文件"multiLogger(fileLogger, consoleLogger, msg)
}

Testing

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com