Go Logger一个简单而强大的 golang 日志工具包
go-logger
一个简单而强大的 golang 日志工具包
功能
- 支持同时输出到 console, file, url
- 命令行输出字体可带颜色
- 文件输出支持根据 文件大小,文件行数,日期三种方式切分
- 文件输出支持根据日志级别分别保存到不同的文件
- 支持异步和同步两种方式写入
- 支持 json 格式化输出
- 代码设计易扩展,可根据需要设计自己的 adapter
安装使用
go get github.com/phachon/go-logger go get ./...
环境需要
go 1.8
支持输出
- console // 输出到命令行
- file // 文件
- api // http url 接口
- ...
快速使用
- 同步方式
import ( "github.com/phachon/go-logger" ) func main() { logger := go_logger.NewLogger() logger.Info("this is a info log!") logger.Errorf("this is a error %s log!", "format") }
- 异步方式
import ( "github.com/phachon/go-logger" ) func main() { logger := go_logger.NewLogger() logger.SetAsync() logger.Info("this is a info log!") logger.Errorf("this is a error %s log!", "format") // 程序结束前必须调用 Flush logger.Flush() }
- 多个输出
import ( "github.com/phachon/go-logger" ) func main() { logger := go_logger.NewLogger() logger.Detach("console") // 命令行输出配置 consoleConfig := &go_logger.ConsoleConfig{ Color: true, // 命令行输出字符串是否显示颜色 JsonFormat: true, // 命令行输出字符串是否格式化 Format: "" // 如果输出的不是 json 字符串,JsonFormat: false, 自定义输出的格式 } // 添加 console 为 logger 的一个输出 logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, consoleConfig) // 文件输出配置 fileConfig := &go_logger.FileConfig { Filename : "./test.log", // 日志输出文件名,不自动存在 // 如果要将单独的日志分离为文件,请配置LealFrimeNem参数。 LevelFileName : map[int]string { logger.LoggerLevel("error"): "./error.log", // Error 级别日志被写入 error .log 文件 logger.LoggerLevel("info"): "./info.log", // Info 级别日志被写入到 info.log 文件中 logger.LoggerLevel("debug"): "./debug.log", // Debug 级别日志被写入到 debug.log 文件中 }, MaxSize : 1024 * 1024, // 文件最大值(KB),默认值0不限 MaxLine : 100000, // 文件最大行数,默认 0 不限制 DateSlice : "d", // 文件根据日期切分, 支持 "Y" (年), "m" (月), "d" (日), "H" (时), 默认 "no", 不切分 JsonFormat: true, // 写入文件的数据是否 json 格式化 Format: "" // 如果写入文件的数据不 json 格式化,自定义日志格式 } // 添加 file 为 logger 的一个输出 logger.Attach("file", go_logger.LOGGER_LEVEL_DEBUG, fileConfig) logger.Info("this is a info log!") logger.Errorf("this is a error %s log!", "format") }
命令行下的文本带颜色效果
自定义格式化输出
你想要自定义日志输出格式 ?
Logger Message
字段 | 别名 | 类型 | 说明 | 例子 |
---|---|---|---|---|
Timestamp | timestamp | int64 | Unix时间戳 | 1521791201 |
TimestampFormat | timestamp_format | string | 时间戳格式化字符串 | 2018-3-23 15:46:41 |
Millisecond | millisecond | int64 | 毫秒时间戳 | 1524472688352 |
MillisecondFormat | millisecond_format | string | 毫秒时间戳格式化字符串 | 2018-3-23 15:46:41.970 |
Level | level | int | 日志级别 | 1 |
LevelString | level_string | string | 日志级别字符串 | Error |
Body | body | string | 日志内容 | this is a info log |
File | file | string | 调用本次日志输出的文件名 | main.go |
Line | line | int | 调用本次日志输出的方法 | 64 |
Function | function | string | 调用本次日志输出的方法名 | main.main |
配置 Format 参数:
consoleConfig := &go_logger.ConsoleConfig{ Format: "%millisecond_format% [%level_string%] %body%" } fileConfig := &go_logger.FileConfig{ Format: "%millisecond_format% [%level_string%] %body%" }
输出结果:
2018-03-23 14:55:07.003 [Critical] this is a critical log!
你只需要配置参数 Format: "% Logger Message 别名%" 来自定义输出字符串格式
更多的 adapter 例子
性能测试结果
参考
beego/logs : github.com/astaxie/beego/logs
反馈
欢迎提交意见和代码,联系信息 phachon@163.com
License
MIT
谢谢
Create By phachon@163.com
评论
如何看待稚晖君的时间管理水平?
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达计算机视觉life整理原文链接:https://www.zhihu.com/question/491456524/answer/2183081310稚晖君究竟是如何安排业余时间去做这么多高水平的项目?而且每个项目的用时也很少,普通
小白学视觉
2
如何画出漂亮的神经网络图?神经网络可视化工具集锦搜集
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达1. draw_convnet一个用于画卷积神经网络的Python脚本https://github.com/gwding/draw_convnet2. NNSVGhttp://alexlenail.me/NN-SVG/LeNet.
小白学视觉
0
三个优秀的PyTorch实现语义分割框架
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达转自 | 机器学习AI算法工程使用的VOC数据集链接开放在文章中,预训练模型已上传Github,环境我使用Colab pro,大家下载模型做预测即可。代码链接: https://github.com/lixiang007
小白学视觉
0
神经网络之CNN与RNN的关系
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达1、CNN介绍CNN是一种利用卷积计算的神经网络。它可以通过卷积计算将原像素很大的图片保留主要特征变成很小的像素图片。本文以李宏毅老师ppt内容展开具体介绍。1.1 Why CNN for Image①为什么引入CNN ?图片示意
小白学视觉
0
如何确定神经网络的层数和隐藏层神经元数量?
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达公众号:尤而小屋作者:呦呦鹿鸣编辑:Peter大家好,我是Peter~关于神经网络中隐藏层的层数和神经元个数充满了疑惑。刚好看到一篇文章很好地答疑了,分享给大家~https://zhuanlan.zhihu.com/p/10041
小白学视觉
0
“海优最初弄出来可并不是为了给大佬弟子开后门的, 学术界现在几乎不存在任何套利空间,不要相信有什么办法可以投机取巧”
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达知乎问题:为什么部分同学倾向土博+国外博后而不是直接国外读博?感觉身边土博越来越多,基本都是土博➕海博后,申国外phd的明显减少(相比较疫情之前几年)知乎Tianteman: 这个问题下,可以看得出一部分国内硕博信息检索能力差的离
小白学视觉
0
一个朋友
一个朋友,在深圳奋斗7年,和女友在去年合力在龙华买了一套房,总价600万,首付3成。但就在昨天,他们崩溃了。深圳推出可售型人才住房,就在他们新房附近,同样面积,总价不到400万,售价近乎腰斩。他们想不明白,同样是深圳人,买房人为什么都要被当成炒房客对待?二手房冰封,卖不出,新房不断打着,像极了上世纪
嵌入式Linux
0
真高!比亚迪员工爆料比亚迪在越南的薪资水平:基本工资480万,全勤奖35万,交通补助20万,餐补110万,每周6天,每天10小时
上一篇:某大公司为逼迫员工离职,竟然把他的工位安排到厕所旁,没想到他直接开始记录领导的如厕时间,还发到公司大群...对此,你怎么看?--完--PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。全文完,感谢你的耐心阅读。如果你还想看到我的文章,请一定给本
开发者全社区
0