• Golang的日志处理


    整个看了一圈下来,感觉Golang的日志包在管理多线程安全的情况下,提供了最小粒度的工具。并没有提供什么复杂的过滤器之类的生成。

    实现了一个demo来记录一下日志分类日志打印等实现:

    package main
    
    import (
        "log"
        "os"
        "io/ioutil"
        "io"
    )
    
    var (
        Trace   *log.Logger // 记录所有日志
        Info    *log.Logger // 重要的信息
        Warning *log.Logger // 需要注意的信息
        Error   *log.Logger // 致命错误
    )
    
    func init() {
        file, err := os.OpenFile("file", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
        if err != nil {
            log.Fatalln("Failed to open error log file:", err)
        }
    
        Trace = log.New(ioutil.Discard, "TRACE: ", log.Ltime|log.Lshortfile)
        Info = log.New(os.Stdout, "Info: ", log.Ltime|log.Lshortfile)
        Warning = log.New(os.Stdout, "Warning: ", log.Ltime|log.Lshortfile)
        Error = log.New(io.MultiWriter(file, os.Stderr),  "Error", log.Ltime|log.Lshortfile)
    }
    
    func main() {
        Trace.Println("I have something standard to say")
        Info.Println("Special Information")
        Warning.Println("There is something you need to know about")
        Error.Println("Something has failed")
    }

    其实给我感觉跟python没差,还简单很多。

    首先还是申明一个logger对象,用他来调用各种logger的方法,一开始初始化了几个级别的日志logger收集器。

    随后就是new一个新的logger并将地址返回分配给它们。这种日志管理的方法真给人一种很清爽的感觉,而且外面可以基于这些最基础的东西再做二次的定制。也非常灵活。后面写东西会尝试多用用看。再来补这篇文章。先占个坑

    to be continue...

  • 相关阅读:
    QLineEdit控件只能输入数字--QValidator结合正则
    谈 Linux,Windows 和 Mac (转自 王垠)
    看了王垠的文章《对Rust语言的分析》
    unsigned int 无符号整型的使用
    Qt布局Layout设置完全填充(设置Layout的Margin值)
    C#批量删除Mysql中相同前缀的表格
    libusb
    NPOI -- 读取excel表格中的时间格式
    spring项目启动执行
    kafka安全(一)SASL+ACL
  • 原文地址:https://www.cnblogs.com/piperck/p/6567441.html
Copyright © 2020-2023  润新知