在 Debian 系统里,“golang 日志怎么开启”通常取决于你说的日志是哪一类:
下面分别说明。
log最简单方式:
package main
import (
"log"
"os"
)
func main() {
log.SetOutput(os.Stdout)
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
log.Println("服务启动")
}
运行:
go run main.go
f, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(f)
logruszapslog(Go 1.21+ 官方结构化日志)示例(slog):
import "log/slog"
slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("启动成功", "port", 8080)
# /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=always
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
✅ 这是 Debian 上最推荐的方式
go build -x
go test -v ./...
❌ “Debian 有专门的 golang 日志开关”
✅ 实际上日志是 Go 程序自己控制的
❌ 日志一定要写文件
✅ systemd + journalctl 更规范
为了给你更准确的答案,可以补充:
我可以给你一份可直接用的配置。