MST
星途 面试题库

面试题:Go语言中如何在日志包中设置不同的日志级别

请描述在Go语言的日志包中,如何通过代码设置不同的日志级别,比如设置为DEBUG、INFO、WARN、ERROR级别,并举例说明如何基于不同级别输出日志。
20.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

在Go语言中,标准库log并没有直接支持日志级别的概念。通常会使用第三方库来实现日志级别功能,比如logrus。以下以logrus为例说明:

  1. 安装logrus

    go get github.com/sirupsen/logrus
    
  2. 设置不同日志级别并输出日志

    package main
    
    import (
        "github.com/sirupsen/logrus"
    )
    
    func main() {
        // 创建一个新的Logger实例
        logger := logrus.New()
    
        // 设置日志级别为DEBUG
        logger.SetLevel(logrus.DebugLevel)
    
        // DEBUG级别日志
        logger.Debug("这是一条DEBUG级别的日志")
    
        // INFO级别日志
        logger.Info("这是一条INFO级别的日志")
    
        // WARN级别日志
        logger.Warn("这是一条WARN级别的日志")
    
        // ERROR级别日志
        logger.Error("这是一条ERROR级别的日志")
    }
    

在上述代码中:

  • logger.SetLevel(logrus.DebugLevel)设置日志级别为DEBUG,DEBUG级别是最低的日志级别,会打印所有级别的日志。
  • logger.Debug("...")输出DEBUG级别的日志。
  • logger.Info("...")输出INFO级别的日志。
  • logger.Warn("...")输出WARN级别的日志。
  • logger.Error("...")输出ERROR级别的日志。

如果将日志级别设置为logrus.InfoLevel,则DEBUG级别的日志不会被打印,以此类推。例如:

package main

import (
    "github.com/sirupsen/logrus"
)

func main() {
    logger := logrus.New()
    // 设置日志级别为INFO
    logger.SetLevel(logrus.InfoLevel)

    logger.Debug("这是一条DEBUG级别的日志") // 此日志不会被打印
    logger.Info("这是一条INFO级别的日志")
    logger.Warn("这是一条WARN级别的日志")
    logger.Error("这是一条ERROR级别的日志")
}