Hello! 欢迎来到小浪云!


Linux 系统中 Golang 日志配置


Linux 系统中 Golang 日志配置

本文探讨在 Linux 环境下如何有效配置 golang 应用的日志系统。 我们将涵盖多种方法,包括使用标准库 log 包、以及高效的第三方库 logrus 和 zap,并演示如何将日志输出到文件、控制台或其他目标,以及如何实现日志轮转。

方法一:使用标准库 log 包

Golang 内置的 log 包提供基础的日志记录功能。通过设置前缀、标志和输出目标,可以进行简单的日志配置。

package main  import (     "log"     "os" )  func main() {     logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)     if err != nil {         log.Fatal(err)     }     defer logFile.Close()      log.SetOutput(logFile)     log.SetPrefix("INFO: ")     log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)      log.Println("This is an informational message.") }

方法二:使用第三方日志库

立即学习go语言免费学习笔记(深入)”;

为了获得更强大的功能和性能,建议使用第三方日志库。以下分别展示 logrus 和 zap 的用法:

方法 2.1: 使用 logrus

logrus 提供灵活的日志级别和格式化选项。

package main  import (     "github.com/sirupsen/logrus"     "os" )  func main() {     logger := logrus.New()     logger.SetLevel(logrus.InfoLevel)     logger.SetFormatter(&logrus.JSONFormatter{})      file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)     if err != nil {         logrus.Fatal(err)     }     logger.Out = file      logger.Info("This is an informational message from logrus.") }

方法 2.2: 使用 zap

zap 以其高性能著称。

package main  import (     "go.uber.org/zap"     "go.uber.org/zap/zapcore" )  func main() {     config := zap.NewProductionConfig()     config.OutputPaths = []string{"app.log"}     config.ErrorOutputPaths = []string{"stderr"}      logger, err := config.Build()     if err != nil {         panic(err)     }     defer logger.Sync()      logger.Info("This is an informational message from zap.") }

方法三:日志轮转 (使用 lumberjack)

在生产环境中,日志轮转至关重要。lumberjack 库可以方便地实现此功能。

package main  import (     "gopkg.in/natefinch/lumberjack.v2"     "log" )  func main() {     log.SetOutput(&lumberjack.Logger{         Filename:   "app.log",         MaxSize:    1, // megabytes         MaxBackups: 3,         MaxAge:     28, // days         Compress:   true,     })      log.Println("This is a message with lumberjack log rotation.") }

通过以上方法,您可以根据需求选择合适的日志配置方案,确保 Golang 应用在 Linux 系统上的日志管理高效可靠。 记得安装必要的库: go get github.com/sirupsen/logrus go.uber.org/zap gopkg.in/natefinch/lumberjack.v2

相关阅读