登录
首页 >  Golang >  Go教程

Golang日志入门:log包使用教程

时间:2026-02-22 23:12:06 252浏览 收藏

Go标准库的log包以轻量、简洁和零依赖著称,是快速实现基础日志记录的理想选择:它默认输出带时间戳的日志到stderr,支持Print/Printf/Println等易用接口,并可通过log.New灵活定制输出目标、前缀和格式(如文件路径与行号),也允许全局配置但需谨慎使用;尽管缺乏日志级别、轮转、异步等生产级功能,正因这份克制与专注,它完美契合Go“简单直接”的哲学——适合原型开发、CLI工具和小型服务,而大规模应用则可平滑过渡至zap等高性能第三方日志库。

Golang如何实现简单日志_Golang log包语法入门

Go 标准库的 log 包轻量、易用,适合快速记录调试信息或简单服务日志,无需引入第三方依赖。

基础用法:默认 logger 输出到 stderr

直接调用 log.Printlog.Printflog.Println 即可输出带时间戳的日志(默认格式:2024/03/15 10:22:33 message)。

  • log.Print("hello") —— 不换行,不加额外空格
  • log.Println("hello") —— 自动换行,参数间加空格
  • log.Printf("user %s logged in at %v", "alice", time.Now()) —— 支持格式化,类似 fmt.Printf

自定义 logger:控制输出目标和前缀

log.New 创建新 logger,可指定写入位置(如文件)、前缀和标志位:

  • writer := os.Stdoutos.File(如 os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
  • 前缀字符串(如 "[INFO]")会在每条日志开头显示
  • 标志位常用组合:log.LstdFlags | log.Lshortfile(含日期时间 + 文件名:行号)

示例:
logger := log.New(os.Stdout, "[DEBUG] ", log.LstdFlags|log.Lshortfile)
logger.Println("request received")

设置全局 logger(慎用)

可通过 log.SetOutputlog.SetPrefixlog.SetFlags 修改默认 logger 行为,但会影响所有使用 log.Print* 的地方,多用于主函数初始化。

  • log.SetOutput(os.Stdout)
  • log.SetPrefix("[APP] ")
  • log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds)

注意点与局限性

log 包不支持日志级别(info/warn/error)、轮转、异步写入等高级功能。生产环境建议搭配 zapzerologlogrus;但写小工具、CLI 或原型时,标准 log 完全够用,且零依赖。

基本上就这些 —— 简单、直接、不花哨,正适合 Go 的哲学。

理论要掌握,实操不能落!以上关于《Golang日志入门:log包使用教程》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>