Go 标准库log 不支持日志级别,仅提供 Print/Fatal/Panic 等函数,无 Info/Warn/Error 分级;需用第三方库(如 logrus、zap)或自行封装前缀式 Logger。
log 本身不支持日志级别这是最容易踩的坑:Go 原生 log 包没有 Info、Warn、Error 等分级接口。它只提供 Print、Printf、Println、Fatal、Fatalf、Panic、Panicf 这几组函数,其中只有 Fatal 和 Panic 会终止程序,其余都只是输出——它们在语义上并无级别区分。
如果你看到别人代码里写了 log.Info(...),那一定是用了第三方库(比如 logrus、zap 或 zerolog),不是标准库。
log.Println():输出后换行,不退出进程log.Fatal():等价于 log.Println() + os.Exit(1),输出后立即终止程序log.Panic():等价于 log.Println() + panic(...),触发 panic,可被 recover 捕获(但一般不这么用)如果不想引入第三方库,又想区分日志用途,常见做法是封装自己的 Logger 类型,用前缀或不同输出目标来区分:
package main
import (
"log"
"os"
)
var (
InfoLogger = log.New(os.Stdout, "[INFO] ", log.Ldate|log.Ltime|log.Lshortfile)
ErrorLogger = log.New(os.Stderr, "[ERROR] ", log.Ldate|log.Ltime|log.Lshortfile)
FatalLogger = log.New(os.Stderr, "[FATAL] ", log.Ldate|log.Ltime|log.Lshortfile)
)
func main() {
InfoLogger.Println("服务启动完成")
ErrorLogger.Printf("数据库连接失败: %v", "timeout")
FatalLogger.Fatal("配置文件不存在,无法继续")
}
注意:log.New 的第三个参数是 flag,常用组合如 log.Ldate | log.Ltime | log.Lshortfile,能帮你快速定位日志来源;不要漏掉 |,写成逗号会编译失败。
InfoLogger 输出到 os.Stdout,方便管道处理或重定向到文件ErrorLogger 和 FatalLogger 输出到 os.Stderr,符合 Unix 习惯,也便于分离错误流FatalLogger.Fatal() 仍会调用 os.Exit(1),不可恢复Fatal 不是 “严重错误日志”,而是 “程序必须退出” 的信号很多人误以为 log.Fatal 是用来记录“高危错误”的,其实它核心语义是“这个错误发生后,程序已无法安全继续运行”。比如:
相反,以下情况不该用 Fatal:
滥用 Fatal 会导致服务频繁崩溃,尤其在微服务或容器环境中,可能触发反复重启循环。
标准库 log 的设计哲学是“足够简单”,它不打算替代专业日志系统。一旦项目规模上升、需要如下能力,就该考虑迁移:
ctx 中的 traceID 自动注入每条日志)推荐起步选择:github.com/sirupsen/logrus(API 清晰,文档全)或 go.uber.org/zap(高性能,适合高吞吐场景)。它们都支持标准库风格的 log.WithField 或 logger.Info 调用,迁移成本低。
别花时间给 log 打补丁加 level 字段——Go 生态里,日志分级这件事,早有成熟解法,而且比你预想的更轻量。
# js
# git
# json
# go
# github
# golang
# 端口
# ai
# unix
# 配置文件
# 开发环境
# 标准库
# print
# 封装
# Error
# printf
# 循环
# 接口
# 切片
# 异步
# 数据库
# http
# elk
# 第三方
# 不支持
# 自己的
# 这是
# 如果你
# 很多人
# 帮你
# 这件事
# 用了
# 不存在
相关文章:
如何选择网络建站服务器?高效建站必看指南
建站之星在线版空间:自助建站+智能模板一键生成方案
实例解析Array和String方法
内部网站制作流程,如何建立公司内部网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何选择域名并搭建高效网站?
如何快速上传自定义模板至建站之星?
如何基于PHP生成高效IDC网络公司建站源码?
javascript中的try catch异常捕获机制用法分析
定制建站方案优化指南:企业官网开发与建站费用解析
如何使用Golang安装API文档生成工具_快速生成接口文档
清除minerd进程的简单方法
如何快速登录WAP自助建站平台?
实例解析angularjs的filter过滤器
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
南宁网站建设制作定制,南宁网站建设可以定制吗?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何在西部数码注册域名并快速搭建网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
C#怎么创建控制台应用 C# Console App项目创建方法
Python路径拼接规范_跨平台处理说明【指导】
如何在局域网内绑定自建网站域名?
网站网页制作专业公司,怎样制作自己的网页?
广州建站公司哪家好?十大优质服务商推荐
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
阿里云网站制作公司,阿里云快速搭建网站好用吗?
建站168自助建站系统:快速模板定制与SEO优化指南
建站之星代理平台如何选择最佳方案?
代刷网站制作软件,别人代刷火车票靠谱吗?
如何快速生成ASP一键建站模板并优化安全性?
如何通过wdcp面板快速创建网站?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何通过网站建站时间优化SEO与用户体验?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
,sp开头的版面叫什么?
Android自定义控件实现温度旋转按钮效果
存储型VPS适合搭建中小型网站吗?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
SQL查询语句优化的实用方法总结
为什么Go需要go mod文件_Go go mod文件作用说明
已有域名如何快速搭建专属网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
电商平台网站制作流程,电商网站如何制作?
太原网站制作公司有哪些,网约车营运证查询官网?
如何高效完成独享虚拟主机建站?
微信小程序 五星评分(包括半颗星评分)实例代码
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
*请认真填写需求信息,我们会在24小时内与您取得联系。