Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >花了点时间写了一个 golang 的 logger 库

花了点时间写了一个 golang 的 logger 库

作者头像
李海彬
发布于 2019-05-08 02:43:00
发布于 2019-05-08 02:43:00
60000
代码可运行
举报
文章被收录于专栏:Golang语言社区Golang语言社区
运行总次数:0
代码可运行

原文作者:joway

花了点时间写了一个 golang 的 logger 库,和目前市面上的 logger 的区别在于: 1. 可以 0 配置使用 2. 支持环境变量控制开关 3. 彩色输出

Inspired by a popular NodeJS logger library: debug.

Feature

  • zero configuration for most use cases.
  • Colorful console output
  • Enable logger by environment easily

Install

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get github.com/joway/loki@latest

API

Usage

Use root logger simply

It will not been affected by LOKI_ENV.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
loki.SetLevel(loki.INFO)

loki.Info("x: %s", "hi")
loki.Debug("x: %s", "hi")
loki.Error("x: %s", "hi")

Create your logger

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
logger := loki.New("app:xxx")
logger.Info("x: %s", "hi")
logger.Debug("x: %s", "hi")
logger.Error("x: %s", "hi")

To enable the logger, just add env LOKI_ENV=app:xxx in your command, like: LOKI_ENV=app:xxx ./main.

You can also use LOKI_ENV=app:a,app:b,model:a to enable multiple logger.

LOKI_ENV=* can enable all loggers.

Use file handler

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// "02 Jan 06 15:04 MST"
l := loki.New("app:xxx")
fp, err := os.OpenFile("test.log", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
defer fp.Close()
flushIntervalMs := 1000
l.SetHandler(loki.NewFileHandler(fp, flushIntervalMs))

l.Info("x: %s", "hi")

Change time format

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// "02 Jan 06 15:04 MST"
loki.SetTimeFormatter(time.RFC822)

// disable time output
loki.SetTimeFormatter("")

Use your custom logger formatter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type ErrFormatter struct {
	loki.Formatter
}

func (f ErrFormatter) format(a ...interface{}) string {
	err := a[0].(error)
	return fmt.Sprintf("Error %v", err)
}

logger := loki.New("app:xxx")
f := ErrFormatter{}
logger.SetFormatter(f)
logger.Debug(errors.New("test error"))

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验