温馨提示×

debian中golang日志怎开启

小樊
39
2026-09-13 01:57:07
栏目: 编程语言

在 Debian 系统里,“golang 日志怎么开启”通常取决于你说的日志是哪一类

  1. 你自己写的 Go 程序里的日志(log 包 / 第三方日志库)
  2. Go 运行时/系统级日志(如 systemd 管理的 Go 服务)
  3. Go 编译或工具链日志(go build / go test)

下面分别说明。


一、Go 程序自身日志(最常见)

1. 使用标准库 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

2. 输出到文件(推荐生产环境)

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

3. 使用第三方日志库(更强大)

  • logrus
  • zap
  • slog(Go 1.21+ 官方结构化日志)

示例(slog):

import "log/slog"

slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("启动成功", "port", 8080)

二、Debian 上以 systemd 运行 Go 程序(生产推荐)

1. 编写 service 文件

# /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

2. 启用并启动

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

3. 查看日志(不用自己写文件)

journalctl -u myapp -f

这是 Debian 上最推荐的方式


三、Go 编译/测试日志

go build

go build -x

go test

go test -v ./...

四、常见误区

❌ “Debian 有专门的 golang 日志开关”
✅ 实际上日志是 Go 程序自己控制的

❌ 日志一定要写文件
✅ systemd + journalctl 更规范


五、你可以告诉我

为了给你更准确的答案,可以补充:

  • 自己写的 Go 程序 还是 别人部署的服务
  • 是否使用 systemd
  • 想看 运行日志 还是 错误日志

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

0