温馨提示×

debian golang日志怎么调

小樊
33
2026-10-04 04:54:19
栏目: 编程语言

在 Debian 上“调 Golang 日志”,一般分 系统/环境层 和 代码层 两块。下面按常见场景给你一套实用做法。


一、Debian 系统层面看日志

1. 用 systemd(最常见)

如果你的 Go 程序是用 systemd 管理的:

sudo journalctl -u your-service.service -f

常用参数:

journalctl -u your-service.service -n 100   # 最近100行
journalctl -u your-service.service --since "10 min ago"
journalctl -u your-service.service -p err   # 只看错误

2. 看程序自己写的日志文件

tail -f /var/log/your-app.log

二、Go 代码层日志怎么“调”

1. 标准库 log(最基础)

import "log"

log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("hello")

常用 flag:

  • log.Ldate
  • log.Ltime
  • log.Lmicroseconds
  • log.Llongfile
  • log.Lshortfile

输出到文件:

log.SetOutput(os.Stdout) // 或文件

2. 推荐:使用 log/slog(Go 1.21+)

官方现代日志库,支持级别和结构化。

import (
    "log/slog"
    "os"
)

logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
    Level: slog.LevelDebug,
}))

slog.SetDefault(logger)

slog.Debug("debug msg", "key", "value")
slog.Info("info msg")
slog.Error("error", "err", err)

JSON 日志(生产常用):

slog.NewJSONHandler(os.Stdout, nil)

3. 第三方日志库(常用)

  • zap(高性能)
logger, _ := zap.NewProduction()
logger.Info("msg", zap.String("key", "val"))
  • logrus
log.SetLevel(log.DebugLevel)

三、日志级别怎么“调”

方式一:环境变量控制

level := os.Getenv("LOG_LEVEL")

Debian 启动前:

LOG_LEVEL=debug ./yourapp

方式二:systemd 环境

[Service]
Environment=LOG_LEVEL=debug

四、调试 Go 程序本身

1. 看 panic / crash

journalctl -u your-app -p err -b

2. 用 dlv 调试

sudo apt install delve
dlv exec ./yourapp

五、常见坑(Debian 特有)

  • systemd 吞 stdout → 一定要 journalctl -u
  • 权限问题 → 日志目录要给服务用户写权限
  • 时区不对 → 设置:
sudo timedatectl set-timezone Asia/Shanghai

如果你能具体说:

  • 是 systemd 服务 / docker / 裸跑
  • 用的 什么日志库
  • 想 调级别 / 看 crash / 接集中式日志

我可以直接给你一套配置示例。

0 踩