日志库
github上面go语言其实已经有很多可用的日志库了,比如sirupsen/logrus,uber-go/zap,golang/glog等等,但是我总觉得没有一个适合自己用,基于以下基本要求,我决定自己写一个轮子。
1. 日志通过文件配置。
2. 支持日志级别输出。
3. 支持同时输出控制台和文件。
4. 支持文件按数量和大小自动切片。
5. 打印文件、行号、日志级别
日志组件基于https://github.com/jander/golog进行改造,改造后的组件为https://github.com/kuxuee/logger
配置文件
logger固定读取程序目录下的logs.config文件,该文件为JSON格式数据。
配置文件logs.config
- name:单个logger配置项名字,由函数logger.NewLogger传入该名字作为参数来读取配置
- data:同一日志配置多个输出端
- handle:输出端console-控制台 file-普通文件 rotating-切片文件
- dir:切片文件目录
- filename:切片文件名,无须后缀名
- levle:日志级别0-debug 1-info 2-warn 3-error 4-panic 5-fatal
- maxnum:最大支持文件数,达到设置值后向前覆盖文件,0为无限个
- maxsize:单个文件大小,达到大小后切片写新日志
{
"logs" : [{
"name":"default",
"data":[
{"handle":"console", "level":3},
{"handle":"rotating", "dir":"./log", "filename":"default", "level":0, "maxnum":0, "maxsize":"1MB"}
]
}]
}
代码
package main
import (
"log"
"time"
"gith