go-logger一个简单而强大的 golang 日志工具包 更新
功能
安装使用go get github.com/phachon/go-logger go get ./... 环境需要go 1.8 支持输出
使用例子
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 LicenseMIT 谢谢Create By phachon@163.com |