在 Debian 上跑 Go 程序时,“日志权限”通常分 三种情况,下面按常见场景给你说明,基本够用。
推荐放到:
/var/log/myapp/
创建目录并授权:
sudo mkdir -p /var/log/myapp
sudo chown -R www-data:www-data /var/log/myapp
sudo chmod 755 /var/log/myapp
如果你的 Go 程序是用
systemd跑的,用户通常是www-data或你自建用户
f, _ := os.OpenFile("/var/log/myapp/app.log",
os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(f)
0644 含义:
如果你用 systemd 管理 Go 程序:
[Unit]
Description=My Go App
[Service]
User=www-data
Group=www-data
ExecStart=/opt/myapp/myapp
Restart=always
[Install]
WantedBy=multi-user.target
⚠️ 如果日志目录不属于 www-data,就会 Permission denied
新建:
sudo nano /etc/logrotate.d/myapp
内容:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 www-data www-data
}
测试:
sudo logrotate -d /etc/logrotate.d/myapp
ls -l /var/log/myapp
ps aux | grep myapp
sudo chmod 777 /var/log/myapp
/var/log/yourapplogrotate 管理0644如果你愿意,可以告诉我:
我可以给你 更精确的配置示例。