发布于2026-07-13 阅读(0)
扫一扫,手机访问
在 Ubuntu 环境下用 Golang 写程序,日志级别该怎么搭?这个问题其实挺常见的——不少刚接触 Go 的朋友会发现标准库的 log 包自带功能比较基础,不支持按级别过滤,而实际项目中又需要区分调试、信息、警告、错误等不同重要程度的输出。下面给出两种务实的方案,从轻量级自定义到第三方成熟库,覆盖不同场景。

方法一:基于标准库 log 包自建级别控制
标准库的 log 包本身不提供级别概念,但我们可以用几行代码封装一个简单的分级日志器。核心思路是定义枚举常量表示级别,再通过一个全局变量控制输出阈值。来看一个例子:
package main
import (
"log"
"os"
)
type LogLevel int
const (
DEBUG LogLevel = iota
INFO
WARNING
ERROR
)
var logger *log.Logger
var currentLogLevel LogLevel
func init() {
logger = log.New(os.Stdout, "", log.LstdFlags)
currentLogLevel = INFO // 默认级别
}
func setLogLevel(level LogLevel) {
currentLogLevel = level
}
func debug(msg string) {
if currentLogLevel <= DEBUG {
logger.Output(2, "DEBUG: "+msg)
}
}
func info(msg string) {
if currentLogLevel <= INFO {
logger.Output(2, "INFO: "+msg)
}
}
func warning(msg string) {
if currentLogLevel <= WARNING {
logger.Output(2, "WARNING: "+msg)
}
}
func error(msg string) {
if currentLogLevel <= ERROR {
logger.Output(2, "ERROR: "+msg)
}
}
func main() {
setLogLevel(INFO)
debug("This is a debug message") // 不会输出
info("This is an info message") // 会输出
warning("This is a warning message")
error("This is an error message")
}
这段代码定义了一个 LogLevel 类型和四个常量,通过 setLogLevel 设置当前级别,各输出函数在内部做阈值判断。注意 logger.Output(2, ...) 中的参数 2 是为了获取调用栈中正确的文件行号,属于标准库的一个小技巧。这种方式的好处是零依赖,适合对第三方库有严格限制的项目。
方法二:使用开箱即用的第三方日志库
如果项目允许引入依赖,直接用 logrus、zap 这类成熟库会省事得多。它们不仅内置了日志级别,还支持结构化输出、性能优化、Hook 扩展等。以 logrus 为例,安装命令:
go get github.com/sirupsen/logrus
然后在代码中只需几行就能生效:
package main
import (
"github.com/sirupsen/logrus"
)
func main() {
logrus.SetLevel(logrus.InfoLevel)
logrus.Debug("This is a debug message") // 不会输出
logrus.Info("This is an info message")
logrus.Warn("This is a warning message")
logrus.Error("This is an error message")
}
这里设置级别为 InfoLevel,那么 Debug 级别的日志会被直接忽略,只输出 Info、Warn、Error。相比之下,第三方库的 API 更简洁,且底层性能通常经过优化,JSON 格式输出、字段附加等功能也是现成的。
总结一下:如果项目依赖简单、不想引入外部包,方法一的自定义封装完全够用;如果追求开发效率和丰富特性,直接选 logrus 或 zap 即可。两种方式都能在 Ubuntu 上稳定运行,根据实际需求取舍就好。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8