centos

golang在centos上的日志配置指南

小樊
57
2025-07-06 12:57:22
栏目: 编程语言

在CentOS上配置Golang应用的日志可以通过以下几种方法:

使用标准库 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, 0644)
 if err != nil {
 log.Fatalf("error opening log file: %v", err)
 }
 defer logFile.Close()

 log.SetOutput(logFile)
 log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)

 log.Println("This is a log message")
 log.Fatalf("This is a fatal error message: %s", "error info")
}

使用第三方日志库

以下是使用 zap 库的示例代码:

package main

import (
 "go.uber.org/zap"
 "go.uber.org/zap/zapcore"
)

func main() {
 config := zap.Config{
 Level: zap.NewAtomicLevelAt(zap.InfoLevel),
 Encoding: "json",
 EncoderConfig: zapcore.EncoderConfig{
 TimeKey: "ts",
 LevelKey: "level",
 MessageKey: "msg",
 StacktraceKey: "stacktrace",
 LineEnding: zapcore.DefaultLineEnding,
 EncodeLevel: zapcore.LowercaseLevelEncoder,
 EncodeTime: zapcore.ISO8601TimeEncoder,
 },
 OutputPaths: []string{"stdout"},
 ErrorOutputPaths: []string{"stderr"},
 }

 logger := config.Build()
 defer logger.Sync()

 logger.Info("This is an info message")
 logger.Error("This is an error message", zap.String("err", "error info"))
}

使用系统日志服务

CentOS提供了 systemd-journaldrsyslog 等系统日志服务,可以集中管理和分析日志。

日志轮转

为了避免日志文件过大,可以使用 logrotate 进行日志轮转。你可以创建一个 logrotate 配置文件,例如:

/path/to/your/logfile {
 daily
 rotate 7
 compress
 missingok
 notifempty
 create 0644 root root
}

将此配置文件添加到 /etc/logrotate.d/ 目录中,并确保cron任务定期运行 logrotate

echo "* * * * * /usr/sbin/logrotate /path/to/your/logrotate.conf" | crontab -

以上就是在CentOS上配置Golang日志的基本方法。你可以根据自己的需求选择合适的日志库和配置方式。

0
看了该问题的人还看了