温馨提示×

debian golang日志怎么用

小樊
41
2026-10-04 04:58:20
栏目: 编程语言

在 Debian 上用 Go(Golang)写日志,常见做法有三类:标准库 log、第三方日志库(如 zap / logrus),以及配合系统日志(syslog / journald)。下面按使用场景给你一个清晰指南。


一、最基础:使用标准库 log

1. 简单打印日志

package main

import (
    "log"
)

func main() {
    log.Println("这是一条普通日志")
    log.Printf("格式化日志: %d\n", 100)
    log.Fatal("致命错误,程序退出")
}

2. 输出到文件(在 Debian 上很常见)

package main

import (
    "log"
    "os"
)

func main() {
    file, err := os.OpenFile("/var/log/myapp.log",
        os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    log.SetOutput(file)
    log.Println("日志写入文件")
}

⚠️ /var/log/ 通常需要 root 权限,或用 sudo


二、常用第三方日志库(推荐)

1. logrus(简单易用)

go get github.com/sirupsen/logrus
package main

import (
    "github.com/sirupsen/logrus"
)

func main() {
    logrus.SetLevel(logrus.DebugLevel)
    logrus.Info("info 日志")
    logrus.Warn("warn 日志")
    logrus.Error("error 日志")
}

输出示例:

INFO[0000] info 日志
WARN[0000] warn 日志

2. zap(高性能,推荐生产环境)

go get go.uber.org/zap
package main

import "go.uber.org/zap"

func main() {
    logger, _ := zap.NewProduction()
    defer logger.Sync()

    logger.Info("zap 日志",
        zap.String("module", "auth"),
        zap.Int("code", 200),
    )
}

三、Debian 特有:写入系统日志

1. 使用 syslog

package main

import (
    "log"
    "log/syslog"
)

func main() {
    logger, err := syslog.New(syslog.LOG_INFO, "myapp")
    if err != nil {
        log.Fatal(err)
    }
    logger.Info("写入 syslog")
}

查看日志:

sudo tail -f /var/log/syslog

2. systemd / journald(Debian 10+)

如果你用 systemd 运行 Go 程序:

sudo journalctl -u myapp.service -f

Go 程序只要输出到 stdout / stderr,journald 会自动收集。


四、作为 systemd 服务运行(实战)

1. 编写服务文件

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

[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=www-data
Restart=always

[Install]
WantedBy=multi-user.target

2. 启动服务

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

3. 查看日志

journalctl -u myapp -f

五、常见推荐方案

场景 推荐
简单脚本 log
小型服务 logrus
高性能服务 zap
Debian 系统服务 stdout + journald

如果你愿意,可以告诉我:

  • 你是 命令行工具 / Web 服务 / 后台守护进程?
  • 日志要 文件 / syslog / journald?

我可以直接帮你写一份完整示例。

0 踩