在 Debian 上配置 Golang 日志,通常分为三种情况,看你具体指的是哪一类:
log最简单的用法:
package main
import (
"log"
"os"
)
func main() {
file, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(file)
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("hello debian")
}
import "github.com/sirupsen/logrus"
func init() {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.SetOutput(os.Stdout)
logrus.SetLevel(logrus.InfoLevel)
}
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("hello debian")
如果 Golang 程序作为 systemd 服务 运行,日志推荐交给 systemd。
# /etc/systemd/system/myapp.service
[Unit]
Description=My Go App
After=network.target
[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=appuser
Restart=on-failure
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
journalctl -u myapp -f
建议放在:
/var/log/myapp/
sudo vim /etc/logrotate.d/myapp
内容示例:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
✅ 生产环境推荐组合
zap / logrussystemdjournalctllogrotate如果你能补充一下:
我可以给你一份完整可直接用的配置示例。