内容简介:go-logger 一个简单而强大的 golang 日志工具包 English document 更新 重构了日志输出文件 输出到文件支持根据日志级别输出到不通的日志文件 功能 支持同时输出到 console, file, url 命令行输出字体可带颜色 文...
go-logger
一个简单而强大的 golang 日志 工具 包
更新
重构了日志输出文件
输出到文件支持根据日志级别输出到不通的日志文件
功能
支持同时输出到 console, file, url
命令行输出字体可带颜色
文件输出支持根据 文件大小,文件行数,日期三种方式切分
文件输出支持根据日志级别分别保存到不同的文件
支持异步和同步两种方式写入
支持 json 格式化输出
代码设计易扩展,可根据需要设计自己的 adapter
安装使用 go get github.com/phachon/go-logger
go get ./...
环境需要
支持同时输出到 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()
// 默认已经添加了 console 的输出,默认不显示颜色,如果需要修改,先删除掉 console
logger.Detach("console")
// 配置 console adapter
console := &go_logger.ConsoleConfig{
Color: true, // 文字是否显示颜色
JsonFormat: true, // 是否格式化成 json 字符串
ShowFileLine: true, // 当 JsonFormat 为 false 时,是否显示文件和行数, 默认为 false 不显示
}
// 添加输出到命令行
// console: adapter name
// level: go_logger.LOGGER_LEVEL_DEBUG
// config: go_logger.NewConfigConsole(console)
logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigConsole(console))
// 配置 file adapter
fileConfig := &go_logger.FileConfig {
Filename : "./test.log", // 日志输出的文件名, 不存在会自动创建
// 如果想要将不同级别的日志单独输出到文件,配置 LevelFileName 参数
LevelFileName : map[int]string {
go_logger.LOGGER_LEVEL_ERROR: "./error.log", // 会将 error 级别的日志写入到 error.log 文件里
go_logger.LOGGER_LEVEL_INFO: "./info.log", // 会将 info 级别的日志写入到 info.log 文件里
go_logger.LOGGER_LEVEL_DEBUG: "./debug.log", // 会将 debug 级别的日志写入到 debug.log 文件里
},
MaxSize : 1024 * 1024, // 文件最大(kb) ,默认 0 不限制
MaxLine : 100000, // 文件最多多少行,默认 0 不限制
DateSlice : "d", // 按日期切分文件,支持 "y"(年), "m"(月), "d"(日), "h"(小时), 默认 "" 不限制
JsonFormat: true, // 写入文件数据是否 json 格式化
}
logger.Attach("file", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigFile(fileConfig))
// 设置为异步,默认是同步方式输出
logger.SetAsync()
logger.Emergency("this is a emergency log!")
logger.Alert("this is a alert log!")
logger.Critical("this is a critical log!")
logger.Error("this is a error log!")
logger.Warning("this is a warning log!")
logger.Notice("this is a notice log!")
logger.Info("this is a info log!")
logger.Debug("this is a debug log!")
logger.Emergencyf("this is a emergency %d log!", 10)
logger.Alertf("this is a alert %s log!", "format")
logger.Criticalf("this is a critical %s log!", "format")
logger.Errorf("this is a error %s log!", "format")
logger.Warningf("this is a warning %s log!", "format")
logger.Noticef("this is a notice %s log!", "format")
logger.Infof("this is a info %s log!", "format")
logger.Debugf("this is a debug %s log!", "format")
// 如果设置为异步,最后必须调用 flush 方法确保所有的日志都输出完
logger.Flush()
}
// 配置 console
console := &go_logger.ConsoleConfig{
Color: true, // 文字是否显示颜色
JsonFormat: true, // 是否格式化成 json 字符串
ShowFileLine: true, // 当 JsonFormat 为 false 时,是否显示文件和行数, 默认为 false 不显示
}
// 添加输出到命令行
// console: adapter name
// level: go_logger.LOGGER_LEVEL_DEBUG
// config: go_logger.NewConfigConsole(console)
logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigConsole(console))
console 文字带颜色效果
console // 输出到命令行
file // 文件
api // http url 接口
...
import ( "github.com/phachon/go-logger" ) func main() { logger := go_logger.NewLogger() // 默认已经添加了 console 的输出,默认不显示颜色,如果需要修改,先删除掉 console logger.Detach("console") // 配置 console adapter console := &go_logger.ConsoleConfig{ Color: true, // 文字是否显示颜色 JsonFormat: true, // 是否格式化成 json 字符串 ShowFileLine: true, // 当 JsonFormat 为 false 时,是否显示文件和行数, 默认为 false 不显示 } // 添加输出到命令行 // console: adapter name // level: go_logger.LOGGER_LEVEL_DEBUG // config: go_logger.NewConfigConsole(console) logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigConsole(console)) // 配置 file adapter fileConfig := &go_logger.FileConfig { Filename : "./test.log", // 日志输出的文件名, 不存在会自动创建 // 如果想要将不同级别的日志单独输出到文件,配置 LevelFileName 参数 LevelFileName : map[int]string { go_logger.LOGGER_LEVEL_ERROR: "./error.log", // 会将 error 级别的日志写入到 error.log 文件里 go_logger.LOGGER_LEVEL_INFO: "./info.log", // 会将 info 级别的日志写入到 info.log 文件里 go_logger.LOGGER_LEVEL_DEBUG: "./debug.log", // 会将 debug 级别的日志写入到 debug.log 文件里 }, MaxSize : 1024 * 1024, // 文件最大(kb) ,默认 0 不限制 MaxLine : 100000, // 文件最多多少行,默认 0 不限制 DateSlice : "d", // 按日期切分文件,支持 "y"(年), "m"(月), "d"(日), "h"(小时), 默认 "" 不限制 JsonFormat: true, // 写入文件数据是否 json 格式化 } logger.Attach("file", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigFile(fileConfig)) // 设置为异步,默认是同步方式输出 logger.SetAsync() logger.Emergency("this is a emergency log!") logger.Alert("this is a alert log!") logger.Critical("this is a critical log!") logger.Error("this is a error log!") logger.Warning("this is a warning log!") logger.Notice("this is a notice log!") logger.Info("this is a info log!") logger.Debug("this is a debug log!") logger.Emergencyf("this is a emergency %d log!", 10) logger.Alertf("this is a alert %s log!", "format") logger.Criticalf("this is a critical %s log!", "format") logger.Errorf("this is a error %s log!", "format") logger.Warningf("this is a warning %s log!", "format") logger.Noticef("this is a notice %s log!", "format") logger.Infof("this is a info %s log!", "format") logger.Debugf("this is a debug %s log!", "format") // 如果设置为异步,最后必须调用 flush 方法确保所有的日志都输出完 logger.Flush() }
// 配置 console console := &go_logger.ConsoleConfig{ Color: true, // 文字是否显示颜色 JsonFormat: true, // 是否格式化成 json 字符串 ShowFileLine: true, // 当 JsonFormat 为 false 时,是否显示文件和行数, 默认为 false 不显示 } // 添加输出到命令行 // console: adapter name // level: go_logger.LOGGER_LEVEL_DEBUG // config: go_logger.NewConfigConsole(console) logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigConsole(console))
console 文字带颜色效果
// 配置 file adapter fileConfig := &go_logger.FileConfig { Filename : "./test.log", // 所有满足条件日志输出的文件名, 不存在会自动创建。如果没有配置 LevelFileName,则 Filename 不能为空! // 如果想要将不同级别的日志单独输出到文件,配置 LevelFileName 参数。同时配置了 Filename 参数,会将所有的日志输出到 Filename LevelFileName : map[int]string { go_logger.LOGGER_LEVEL_ERROR: "./error.log", // 会将 error 级别的错误写入到 error.log 文件里 go_logger.LOGGER_LEVEL_INFO: "./info.log", // 会将 info 级别的错误写入到 info.log 文件里 go_logger.LOGGER_LEVEL_DEBUG: "./debug.log", // 会将 debug 级别的错误写入到 debug.log 文件里 }, MaxSize : 1024 * 1024, // 文件最大(kb) ,默认 0 不限制 MaxLine : 100000, // 文件最多多少行,默认 0 不限制 DateSlice : "d", // 按日期切分文件,支持 "y"(年), "m"(月), "d"(日), "h"(小时), 默认 "" 不限制 JsonFormat: true, // 写入文件数据是否 json 格式化 } logger.Attach("file", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigFile(fileConfig)) // 注意:
apiConfig := &go_logger.ApiConfig{ Url: "http://127.0.0.1:8081/index.php", // 请求的 url 地址,不能为空 Method: "GET", // 请求方式 GET, POST Headers: map[string]string{}, // request header IsVerify: false, // 是否验证 url 请求返回 http code VerifyCode: 0, // 如果 IsVerify 为 true, 需要验证的成功的 http code 码, 不能为 0 } logger.Attach("api", go_logger.LOGGER_LEVEL_DEBUG, go_logger.NewConfigApi(apiConfig))
参考
beego/logs : github.com/astaxie/beego/logs
反馈
欢迎提交意见和代码,联系信息 phachon@163.com
License
MIT
谢谢
Create By phachon@163.com
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java工具包:资源访问器
- Synonyms:中文近义词工具包
- AopLog 2.4 发布,日志工具包
- TensorFlow 模型优化工具包正式推出
- [Nuget]使用Nuget管理工具包
- xk-time 0.0.7 发布,Java 时间工具包,新增 Cron 表达式工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高性能网站建设指南
Steve Souders / 刘彦博 / 电子工业出版社 / 2008年 / 35.00元
本书结合Web 2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。《高性能......一起来看看 《高性能网站建设指南》 这本书的介绍吧!