温馨提示×

golang日志在debian怎开启

小樊
42
2026-10-01 06:44:09
栏目: 编程语言

在 Debian 上“开启 Golang 日志”一般有几种常见理解,我分别说明,你可以对照自己的场景:


一、Golang 程序本身的日志(应用日志)

Go 标准库自带 log 包,不需要额外安装。

1. 最简单的日志

package main

import (
    "log"
)

func main() {
    log.SetFlags(log.LstdFlags | log.Lshortfile)
    log.Println("程序启动")
}

运行:

go run main.go

2. 输出到文件(Debian 常用)

logFile, err := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
    log.Fatal(err)
}
log.SetOutput(logFile)

确保目录可写:

sudo mkdir -p /var/log/myapp
sudo chown $USER:$USER /var/log/myapp

二、用 systemd 管理 Go 程序(推荐方式)

如果是作为服务运行,日志交给 systemd/journald 最规范。

1. 编译并放置程序

go build -o /opt/myapp/myapp

2. 创建 systemd 服务

sudo nano /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

[Install]
WantedBy=multi-user.target

3. 启动并查看日志

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

查看日志:

journalctl -u myapp -f

三、使用第三方日志库(更专业)

logrus 示例

go get github.com/sirupsen/logrus
import "github.com/sirupsen/logrus"

func main() {
    logrus.SetFormatter(&logrus.JSONFormatter{})
    logrus.Info("hello debian")
}

四、常见疑问

Q: Debian 有没有像 Nginx 那样的日志开关?

没有,Go 程序自己控制日志输出位置。

Q: 日志太多怎么办?

  • 用 logrotate
  • 或用 journalctl 自动管理

如果你能告诉我:

  • 是自己写的 Go 程序还是第三方 Go 服务
  • 是否用 systemd
  • 日志想输出到 终端 / 文件 / journal

我可以直接给你一份可复制的配置。

0 踩