centos

Golang日志文件在CentOS中如何管理

小樊
42
2025-11-25 23:40:08
栏目: 编程语言

CentOS下Golang日志管理实践

一 总体思路与方案选型

二 输出到标准输出并用 systemd 管理

[Unit]
Description=My Go Application
After=network.target

[Service]
Type=simple
User=myapp
Group=myapp
ExecStart=/opt/myapp/myapp
StandardOutput=journal
StandardError=journal
Restart=always
WorkingDirectory=/opt/myapp

[Install]
WantedBy=multi-user.target

三 写入文件并用 logrotate 轮转

sudo mkdir -p /var/log/myapp
sudo chown myapp:myapp /var/log/myapp
sudo chmod 0755 /var/log/myapp
/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0640 myapp myapp
    copytruncate
}

四 在程序内使用 lumberjack 进行内置轮转

go get gopkg.in/natefinch/lumberjack.v2
package main

import (
    "log"
    "gopkg.in/natefinch/lumberjack.v2"
)

func main() {
    logger := log.New(&lumberjack.Logger{
        Filename:   "/var/log/myapp/app.log", // 日志路径
        MaxSize:    10,                     // 单个文件最大 10MB
        MaxBackups: 7,                      // 最多保留 7 个备份
        MaxAge:     28,                     // 备份最多保留 28 天
        Compress:   true,                   // 启用压缩
    }, "", log.LstdFlags)

    logger.Println("hello, this is a log message")
}

五 权限与集中式日志方案

0
看了该问题的人还看了