ubuntu golang日志级别如何设置
在Ubuntu系统下用Go语言开发时,标准库log包缺少日志级别过滤功能。可通过封装实现自定义分级日志器,或采用logrus、zap等成熟第三方库,以满足调试、信息、警告、错误等不同输出需求,从而提升日志管理的灵活性和可读性,便于问题定位,提高开发效率。
在 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 上稳定运行,根据实际需求取舍就好。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













