GO语言基础教程(176)Go记录日志之log库中的函数:Go日志攻略:从Print到Slog,轻松掌握日志管理!

每次调试代码都像在茫茫大海中捞针?让你的日志输出不再只是“Hello World”级别的简单输出!

一、初识Go log包:你的第一个日志语句

想象一下,你正在编写一个用户登录系统,当用户登录时,你想记录一下这个事件。使用Go的log包,只需要几行代码:

package main

import "log"

func main() {
    user := "小明"
    
    log.Print("用户登录成功") 
    log.Printf("用户 %s 登录成功", user)
    log.Println("用户登录成功,当前时间:", "2023-10-01 12:00:00")
}

运行这段代码,你会看到类似这样的输出:

2025/05/30 04:05:22 用户登录成功
2025/05/30 04:05:22 用户 小明 登录成功
2025/05/30 04:05:22 用户登录成功,当前时间: 2023-10-01 12:00:00

看,日志自动加上了日期和时间!这就是log包的默认行为。

三种输出方法区别

  • Print:普通输出,不换行
  • Printf:格式化输出,类似fmt.Printf
  • Println:输出后自动换行

在实际开发中,我建议主要使用PrintfPrintln,因为它们既能满足格式化需求,又能保证可读性。

二、不仅仅是输出:Fatal和Panic的特殊使命

log包不仅仅能输出信息,还能在关键时刻"挺身而出",这就是Fatal和Panic系列函数。

Fatal系列:当程序无法继续时

想象一下,如果数据库连接失败,你的程序根本无法正常工作,这时候就应该使用Fatal日志:

package main

import "log"

func main() {
    log.Println("程序启动...")
    
    // 模拟数据库连接失败
    dbConnected := false
    if !dbConnected {
        log.Fatal("数据库连接失败,程序退出")
        // 这行代码不会执行
        log.Println("这行不会执行")
    }
}

运行结果:

2025/05/30 04:05:23 程序启动...
2025/05/30 04:05:23 数据库连接失败,程序退出

关键点log.Fatal会先输出日志,然后调用os.Exit(1)立即终止程序。所以Fatal后面的代码不会执行。

Panic系列:紧急情况下的优雅处理

与Fatal不同,Panic系列函数会触发panic,但可以被recover捕获:

package main

import (
    "fmt"
    "log"
)

func main() {
    defer func() {
        if err := recover(); err != nil {
            fmt.Println("捕获到panic:", err)
        }
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值