Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages