logx是一个简单好用的golang日志库

Golang 归档:202211
普通
浏览:175
2022-11-24 18:22:05
logx是一个简单又好用的go日志库,github地址:github.com/zituocn/logx

logx

一个简单又好用的go日志库

特性

  1. API简单,可快速上手使用
  2. 可设置日志输出格式
  3. 可定义日志输出等级
  4. 可定义是否颜色输出
  5. 可实现自己的 io.writer

安装

go get github.com/zituocn/logx

1、在控制台打印日志

1.1 快速上手

快速使用,使用默认的配置

package main

import (
    "github.com/zituocn/logx"
)

func main() {
    logx.Info("info")
    logx.Debug("debug")
    logx.Error("error")
    logx.Notice("notice")
    logx.Warn("warn")
    logx.Panic("panic")
    logx.Fatal("fatal")
}

输出

1.2 支持printf式的格式化

package main

import (
    "time"

    "github.com/zituocn/logx"
)

func main() {
    logx.Infof("这是一个字串: %s", time.Now())
    logx.Debugf("这是一个对象: %#v", time.Now())
}

输出

2022/11/23 21:16:49.507 [INFO] main.go:10: 这是一个字串: 2022-11-23 21:16:49.507432 +0800 CST m=+0.000194033
2022/11/23 21:16:49.507 [DEBU] main.go:11: 这是一个对象: time.Date(2022, time.November, 23, 21, 16, 49, 507724000, time.Local)

1.3 自定义配置

可以配置输出格式、样式等

package main

import (
    "os"

    "github.com/zituocn/logx"
)

func init() {
    logx.SetWriter(os.Stdout).
        SetColor(true).
        SetFormat(logx.LogFormatJSON).
        SetPrefix("demo")
}

func main() {
    logx.Info("info str")
    logx.Debug("debug str")
}

输出

{"prefix":"demo","time":"2022/11/23 20:25:6.166","level":"","file":"main.go:17","msg":"info str"}
{"prefix":"demo","time":"2022/11/23 20:25:6.166","level":"","file":"main.go:18","msg":"debug str"}

参数说明

  • logx.SetWriter -> 设置输出到哪一个io.writer
  • SetColor -> 设置是否输出颜色
  • SetFormat(logx.LogFormatJSON) -> 日志输出为json格式
  • SetPrefix -> 设置日志前缀

2. 同时写日志到文件

2.1 使用 logxFileWriter

package main

import (
    "io"
    "os"
    "time"

    "github.com/zituocn/logx"
)

func init() {
    logx.SetWriter(io.MultiWriter(
        os.Stdout,
        logx.NewFileWriter(logx.FileOptions{
            StorageType: logx.StorageTypeDay,
            MaxDay:      7,
            Dir:         "./logs",
            Prefix:      "web",
        }))).SetColor(false)
}

func main() {
    logx.Infof("这是一个字串: %s", time.Now())
    logx.Debugf("这是一个对象: %#v", time.Now())
}

代码说明

  1. logx.SetWriter 时,使用了io.MultiWriter
  2. 把日志输出到了os.Stdoutlogx.FileWriter
  3. 设置不显示颜色 SetColor(false)

2.2 自己设计一个io.Writer

可以自己设计一个实现了 io.Writer ,由 logx.SetWriter 传入,可以是文件或网络。

package main

import (
    "github.com/zituocn/logx"
    "io"
    "os"
    "time"
)

func init() {
    myWriter, err := os.OpenFile("./my_log_file.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0664)
    if err != nil {
        panic(err)
    }
    logx.SetWriter(io.MultiWriter(
        os.Stdout,
        myWriter,
    )).SetColor(false)
}

func main() {
    logx.Infof("这是一个字串: %s", time.Now())
    logx.Debugf("这是一个对象: %#v", time.Now())
}
注意事项
  • 此文章对你有帮助,对作者表示感谢(微信):
  • 本文地址:https://22v.net/article/3264/
  • 转载本文时,请注明转载自“SamBlog”的字样。
  • 如此文章有损您的合法权益,请使用页面底部的邮箱与我取得联系。
分类目录
文章归档
友情站点