“Golang 日志在 Debian 跑不起来”这句话比较笼统,一般可能指这几种情况之一。我先按常见坑 + 排查步骤给你一套思路,你对照看看是哪一种。
请先确认是哪一种:
如果你是写文件日志:
log.SetOutput(os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644))
在 Debian 上:
✅ 解决:
sudo touch /var/log/myapp.log
sudo chown youruser:youruser /var/log/myapp.log
或改到:
./logs/app.log
Debian 用 systemd,stdout/stderr 会被 journald 接走
你用:
log.Println("hello")
本地有,服务器“没日志”,其实是:
journalctl -u your-service -f
✅ 解决:
journalctl -u your-app.service
log.SetOutput(os.OpenFile("app.log", ...))
在 Debian:
systemd 启动 → 工作目录通常是 //app.log(你找不到)✅ 解决:
os.Getwd()
或写绝对路径
例如 logrus / zap:
logrus.SetOutput(file) // 没调就默认 stderr
✅ 确认你:
SetOutputinit() 之前 panicpackage main
import (
"log"
"os"
)
func main() {
f, err := os.OpenFile("/tmp/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Fatal(err)
}
defer f.Close()
log.SetOutput(f)
log.Println("hello debian")
}
然后:
go run main.go
cat /tmp/myapp.log
你可以直接贴:
我可以直接帮你改到能在 Debian 上跑 ✅