温馨提示×

debian中golang日志如何写

小樊
40
2026-09-10 03:41:08
栏目: 编程语言

在 Debian 系统上使用 Go(Golang)写日志,常见方式有 标准库 log第三方日志库(如 logrus、zap),以及系统日志(syslog)。下面按使用场景给你介绍几种常见写法。


一、使用 Go 标准库 log(最简单)

1. 输出到控制台

package main

import (
    "log"
)

func main() {
    log.Println("这是一条日志")
    log.Printf("当前值: %d\n", 10)
}

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()

    logger := log.New(file, "MYAPP: ", log.LstdFlags|log.Lshortfile)
    logger.Println("写入日志文件")
}

注意:

  • /var/log/ 目录一般需要 root 权限
  • 普通用户建议用 ~/logs//tmp/

二、使用 logrus(结构化日志,推荐)

安装

go get github.com/sirupsen/logrus

示例

package main

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

func main() {
    log := logrus.New()
    log.SetFormatter(&logrus.JSONFormatter{})
    log.SetLevel(logrus.InfoLevel)

    log.WithFields(logrus.Fields{
        "user": "alice",
    }).Info("用户登录")
}

写入文件

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

三、使用 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.String("host", "debian"),
        zap.Int("port", 8080),
    )
}

四、写入 Debian 系统日志(syslog)

使用标准库 log/syslog

package main

import (
    "log"
    "log/syslog"
)

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

查看日志:

sudo journalctl -t myapp
# 或
sudo tail -f /var/log/syslog

五、结合 systemd(Debian 常见部署方式)

如果你用 systemd 运行 Go 程序:

  • Go 程序直接 log.Println
  • 日志由 systemd 接管
  • 查看日志:
journalctl -u myapp.service -f

myapp.service 示例:

[Unit]
Description=My Go App

[Service]
ExecStart=/opt/myapp/myapp
Restart=always

[Install]
WantedBy=multi-user.target

六、推荐方案总结

场景 推荐方式
学习 / 小工具 log
Web 服务 logrus
高并发服务 zap
系统级服务 syslog + systemd

如果你能告诉我:

  • 命令行程序 / Web 服务 / 后台服务
  • 是否使用 systemd
  • 是否要 JSON 日志 / 文件 / 控制台

我可以直接给你一套完整示例。

0