• go日志包 log的使用


    1、log简介
    golang内置了log包,实现简单的日志服务。通过调用log包的函数,可以实现简单的日志打印功能。

    2、log使用
    log包中有3个系列的日志打印函数,分别print系列、panic系列、fatal系列。

    函数系列 作用
    print 单纯打印日志
    panic 打印日志,抛出panic异常
    fatal 打印日志,强制结束程序(os.Exit(1)),defer函数不会执行
    2.1 简单示例
    func main() {
    defer fmt.Println(“panic退出前处理”)
    log.Println(“println日志”)
    log.Panic(“panic日志”)
    log.Fatal(“程序退出日志”)
    }
    结果示例(实际结果不是这样的哦,因为panic,fatal会影响程序的执行):

    2020/06/02 11:04:17 println日志
    2020/06/02 11:04:17 panic日志
    2020/06/02 11:04:17 panic退出前处理
    2020/06/02 11:04:17 程序退出日志
    3、log配置
    3.1 标准log配置
    默认情况下log只会打印出时间,但是实际情况下我们可能还需要获取文件名,行号等信息,log包提供给我们定制的接口。
    log包提供两个标准log配置的相关方法:

    func Flags() int // 返回标准log输出配置
    func SetFlags(flag int) // 设置标准log输出配置
    flag参数
    const (
    // 控制输出日志信息的细节,不能控制输出的顺序和格式。
    // 输出的日志在每一项后会有一个冒号分隔:例如2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
    Ldate = 1 << iota // 日期:2009/01/23
    Ltime // 时间:01:23:23
    Lmicroseconds // 微秒级别的时间:01:23:23.123123(用于增强Ltime位)
    Llongfile // 文件全路径名+行号: /a/b/c/d.go:23
    Lshortfile // 文件名+行号:d.go:23(会覆盖掉Llongfile)
    LUTC // 使用UTC时间
    LstdFlags = Ldate | Ltime // 标准logger的初始值
    )
    标准日志配置示例
    func init() {
    log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)

    }
    func main() {
    log.Println(“println日志”)
    }
    输出结果:

    image.png
    3.2 日志前缀配置
    log包提供两个日志前缀配置的相关函数:

    func Prefix() string // 返回日志的前缀配置
    func SetPrefix(prefix string) // 设置日志前缀
    日志前缀配置实例
    func init() {
    log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
    log.SetPrefix(“success”)
    }
    func main() {
    log.Println(“println日志”)
    }
    输出结果:

    image.png
    3.3 日志输出位置配置
    前面介绍的都是将日志输出到控制台上,golang的log包还支持将日志输出到文件中。log包提供了func SetOutput(w io.Writer)函数,将日志输出到文件中。

    日志输出位置配置
    func init() {
    log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
    logFile, err := os.OpenFile(“./c.log”, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
    log.Panic(“打开日志文件异常”)
    }
    log.SetOutput(logFile)
    }
    func main() {
    log.Println(“println日志”)
    }
    结果:日志输出到当前目录下c.log文件中

    image.png
    4、自定义logger
    log包为我们提供了内置函数,让我们能自定义logger。从效果上来看,就是将标题3中的标准日志配置、日志前缀配置、日志输出位置配置整合到一个函数中,使日志配置不在那么繁琐。
    log包中提供了func New(out io.Writer, prefix string, flag int) *Logger函数来实现自定义logger。

    示例
    var logger *log.Logger

    func init() {
    logFile, err := os.OpenFile(“./c.log”, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
    log.Panic(“打开日志文件异常”)
    }
    logger = log.New(logFile, “success”, log.Ldate | log.Ltime | log.Lshortfile)
    }
    func main() {
    logger.Println(“自定义logger”)
    }

  • 相关阅读:
    含文档+PPT+源码等]精品基于SpringBoot的便捷网住宿预约系统的设计与实现包运行成功]Java毕业设计SpringBoot项目源码
    数字图像处理(2)像素邻域、领接、通路与距离
    iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
    strcpy函数详解:字符串复制的利器
    我在Vscode学OpenCV 基本的加法运算
    kubernetes kube-apiserver 存在SSRF漏洞
    软件测试/测试开发丨ChatGPT能否成为PPT最佳伴侣
    静态库与动态库的制作与使用
    在EF Core中为数据表按列加密存储
    CNN应用:图片分类
  • 原文地址:https://blog.csdn.net/S_ZaiJiangHu/article/details/125470631