温馨提示×

golang在debian日志怎开启

小樊
35
2026-09-04 01:59:19
栏目: 编程语言

在 Debian 上“开启 Golang 日志”通常有两种理解,我分别说明,你可以按需选择:


一、把 Go 程序自身日志输出到系统日志(systemd / journald)

1. 用 systemd 管理 Go 程序(推荐)

假设你有一个编译好的 Go 程序 /opt/myapp/myapp

创建 systemd 服务

sudo vim /etc/systemd/system/myapp.service

内容示例:

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

[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=www-data
Restart=on-failure
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

启动并开机自启

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

查看日志

journalctl -u myapp -f

✅ Go 程序中用 log.Println 即可,自动进入系统日志


二、把日志写入 Debian 传统日志文件(/var/log)

方法 1:Go 程序直接写文件

logFile, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(logFile)

方法 2:交给 rsyslog(系统级日志)

Go 代码使用 syslog

import "log/syslog"

logwriter, _ := syslog.New(syslog.LOG_INFO, "myapp")
log.SetOutput(logwriter)

Debian 配置 rsyslog

sudo vim /etc/rsyslog.d/myapp.conf
if ($programname == "myapp") then {
    /var/log/myapp.log
    & stop
}
sudo systemctl restart rsyslog

查看:

tail -f /var/log/myapp.log

三、常见建议

  • ✅ 生产环境:systemd + journalctl
  • ✅ 多服务聚合日志:rsyslog / syslog
  • ✅ 结构化日志:可用 zap / logrus

如果你指的是:

  • Go 程序如何用 log
  • 如何开启 某个具体服务(如 Go Web 服务) 的日志
  • 或 Debian 系统日志本身怎么开

可以告诉我具体场景,我给你更精确的配置。

0