温馨提示×

Linux下如何配置Golang日志轮转

小樊
55
2025-07-12 09:12:39
栏目: 编程语言

在 Linux 下,你可以使用 logrotate 工具来实现 Golang 日志的轮转。以下是配置 Golang 日志轮转的步骤:

  1. 首先,确保你的 Golang 应用程序使用的是 log 包(log)或者类似的日志库(如 logrus、zap 等)。

  2. 在你的 Golang 应用程序中,将日志输出到一个文件。例如:

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.Fatalf("error opening log file: %v", err)
	}
	defer logFile.Close()

	log.SetOutput(logFile)
	log.Println("Hello, World!")
}
  1. 创建一个 logrotate 配置文件。在你的 /etc/logrotate.d/ 目录下创建一个新的配置文件,例如 myapp。你可以使用以下内容作为配置文件的模板:
/path/to/your/app.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0640 root root
}

这个配置文件的意思是:

  • 每天轮转日志文件(daily)
  • 保留最近 7 天的日志文件(rotate 7)
  • 对旧的日志文件进行压缩(compress)
  • 如果日志文件不存在,不要报错(missingok)
  • 如果日志文件为空,不进行轮转(notifempty)
  • 创建新的日志文件,权限为 0640,属主为 root,属组为 root(create 0640 root root)
  1. 根据你的实际情况修改配置文件中的路径和选项。

  2. 保存并关闭配置文件。

  3. 测试 logrotate 配置是否正确。你可以使用以下命令手动触发日志轮转:

logrotate -f /etc/logrotate.d/myapp

这个命令会强制执行 /etc/logrotate.d/myapp 配置文件中的日志轮转。

现在,你的 Golang 应用程序的日志文件应该已经配置好了自动轮转。每天都会生成一个新的日志文件,并保留最近 7 天的日志文件。

0