温馨提示×

debian golang日志格式怎改

小樊
42
2026-09-13 01:55:06
栏目: 编程语言

在 Debian 上运行 Golang 程序时,“日志格式怎么改”通常有两种场景:改 Go 程序自身的日志格式,或改 systemd / 系统日志的格式。下面分别说明。


一、修改 Go 程序自己的日志格式

Go 标准库是 log 包,默认格式比较简单。

1. 使用标准库 log

package main

import (
    "log"
    "os"
)

func main() {
    log.SetOutput(os.Stdout)
    log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)

    log.Println("hello")
}

常用 flag:

  • log.Ldate:日期
  • log.Ltime:时间
  • log.Lmicroseconds:微秒
  • log.Llongfile:完整文件名
  • log.Lshortfile:文件名+行号

输出示例:

2026/01/21 10:00:00 main.go:12: hello

2. 自定义日志格式(推荐)

标准库格式不灵活,建议用 logruszap

logrus 示例(JSON / 自定义)

import "github.com/sirupsen/logrus"

func main() {
    logrus.SetFormatter(&logrus.JSONFormatter{})
    logrus.WithFields(logrus.Fields{
        "app": "demo",
    }).Info("hello")
}

zap 示例(高性能)

import "go.uber.org/zap"

func main() {
    logger, _ := zap.NewProduction()
    defer logger.Sync()
    logger.Info("hello",
        zap.String("app", "demo"),
    )
}

二、改 Debian systemd 下的日志格式

如果你是用 systemd 启动 Go 程序(.service 文件),日志会进入 journald

1. 查看日志

journalctl -u your-service.service

2. journald 日志格式(输出样式)

journalctl -u your-service.service --output=json
journalctl -u your-service.service --output=short-iso

可选格式:

  • short
  • short-iso
  • short-precise
  • verbose
  • json

3. 修改 journald 配置

编辑:

sudo nano /etc/systemd/journald.conf

常见项:

Storage=persistent
MaxRetentionSec=2week

改完重启:

sudo systemctl restart systemd-journald

三、如果你是用 rsyslog / syslog

Debian 传统日志在 /var/log/,由 rsyslog 管理。

修改 rsyslog 模板格式

sudo nano /etc/rsyslog.conf

示例模板:

template(name="MyFormat" type="string"
  string="%timegenerated% %hostname% %app-name%: %msg%\n")

总结

场景 改哪里
Go 程序日志格式 log / logrus / zap
systemd 日志显示格式 journalctl --output
系统日志格式 rsyslog.conf

如果你能说明:

  • Go 代码里 还是 Debian 系统日志
  • 用的是 systemd / supervisor / 裸跑
  • 想要 JSON / 时间格式 / 文件行号

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

0