golang log模块使用

在Go中,log 包是用于输出日志信息的标准库。以下是一些基本的 log 包的使用示例:

  1. 基本用法:

    package main
    
    import (
        "log"
    )
    
    func main() {
        log.Println("This is a log message.")
    }

    运行程序,你会在控制台看到日志信息。

  2. 指定日志前缀:

    package main
    
    import (
        "log"
    )
    
    func main() {
        log.SetPrefix("MyApp: ")
        log.Println("This is a log message.")
    }

    这会输出类似于 MyApp: This is a log message. 的日志。

  3. 指定日志输出位置:

    package main
    
    import (
        "log"
        "os"
    )
    
    func main() {
        logFile, err := os.Create("logfile.txt")
        if err != nil {
            log.Fatal("Cannot create log file: ", err)
        }
        defer logFile.Close()
    
        log.SetOutput(logFile)
        log.Println("This log message will be written to the file.")
    }

    这会将日志写入 logfile.txt 文件中。

  4. 指定日志级别:

    log 包默认支持 PrintFatal 和 Panic 三个级别。

    package main
    
    import (
        "log"
    )
    
    func main() {
        log.Print("This is a regular log message.")
        log.Fatal("This is a fatal log message.")
        log.Panic("This is a panic log message.")
    }

    Fatal 会输出消息并调用 os.Exit(1)Panic 会输出消息并调用 panic

  5. 自定义日志记录器:

    package main
    
    import (
        "log"
        "os"
    )
    
    var (
        infoLog    = log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
        warningLog = log.New(os.Stdout, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile)
    )
    
    func main() {
        infoLog.Println("This is an info message.")
        warningLog.Println("This is a warning message.")
    }

    在这个例子中,我们创建了两个不同的日志记录器,一个用于信息级别,另一个用于警告级别。自定义日志记录器可以定制输出格式和其他属性。

     6. 格式化输出:
在Go的标准库中,log 包的日志输出默认是简单的文本格式。如果你想要更精细的控制和格式化输出,你可以使用 fmt 包进行格式化,然后将格式化后的字符串传递给 log.Printlog.Printflog.Println 等函数。

以下是一个使用 fmt 包格式化输出的示例:

package main

import (
    "fmt"
    "log"
)

func main() {
    name := "John"
    age := 30

    // 使用 fmt.Sprintf 进行字符串格式化
    message := fmt.Sprintf("Name: %s, Age: %d", name, age)

    // 输出格式化后的消息
    log.Print(message)
}

上面的例子中,fmt.Sprintf 用于格式化字符串,然后将格式化后的字符串传递给 log.Print。这允许你按照需要创建任意格式的日志消息。

如果你想要更多的格式化控制,你也可以使用 log.Printf,该函数使用格式字符串和参数列表,类似于 fmt.Printf

package main

import (
    "log"
)

func main() {
    name := "John"
    age := 30

    // 使用 log.Printf 进行字符串格式化
    log.Printf("Name: %s, Age: %d", name, age)
}

这样,你可以使用类似于 fmt.Printf 的占位符进行格式化,如 %s%d 等。

这只是 `log` 包的基本用法示例。在实际应用中,你可能需要更复杂的日志记录、滚动日志文件等功能。有时候,使用第三方的日志库,如 `logrus`、`zap` 等,可以提供更丰富的功能和更灵活的配置。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

telllong

你的鼓励是我创作最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值