Skip to content

zituocn/logx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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())
}

About

A useful log library for golang

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages