温馨提示×

golang日志在debian怎配置

小樊
44
2026-09-04 01:47:20
栏目: 编程语言

在 Debian 上配置 Golang 日志,通常分为三种情况,看你具体指的是哪一类:


一、Golang 程序自身的日志(代码层配置)

1. 使用标准库 log

最简单的用法:

package main

import (
    "log"
    "os"
)

func main() {
    file, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    log.SetOutput(file)
    log.SetFlags(log.LstdFlags | log.Lshortfile)

    log.Println("hello debian")
}

2. 使用第三方日志库(推荐)

logrus

import "github.com/sirupsen/logrus"

func init() {
    logrus.SetFormatter(&logrus.JSONFormatter{})
    logrus.SetOutput(os.Stdout)
    logrus.SetLevel(logrus.InfoLevel)
}

zap(高性能)

logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("hello debian")

二、Debian 系统级日志(systemd + journald)

如果 Golang 程序作为 systemd 服务 运行,日志推荐交给 systemd。

1. 编写 service 文件

# /etc/systemd/system/myapp.service
[Unit]
Description=My Go App
After=network.target

[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=appuser
Restart=on-failure
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

三、日志文件 + logrotate(Debian 常规做法)

1. 日志路径

建议放在:

/var/log/myapp/

2. 配置 logrotate

sudo vim /etc/logrotate.d/myapp

内容示例:

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

四、常见推荐方案(实战)

生产环境推荐组合

  • Golang:zap / logrus
  • 运行方式:systemd
  • 日志查看:journalctl
  • 文件日志:可选 + logrotate

如果你能补充一下:

  • 命令行程序 还是 Web 服务
  • 是否用 systemd
  • 想输出到 文件 / 终端 / journald

我可以给你一份完整可直接用的配置示例

0