日志分割和日志钩子框架是使用开源三方的名字叫:file-rotatelogs,lfshook hook.go packagemlogimport( rotatelogs"github.com/lestrrat-go/file-rotatelogs""github.com/rifflock/lfshook""github.com/sirupsen/logrus""time")funcNewLfsHook(l
func (r *fileRotatelogs) GetWriteSyncer(level string) (zapcore.WriteSyncer, error) { fileWriter, err := rotatelogs.New( path.Join(global.GVA_CONFIG.Zap.Director, "%Y-%m-%d", level+".log"), rotatelogs.WithClock(rotatelogs.Local), rotatelogs.WithMaxAge(time.Duration(global.GVA_CONFIG.Zap.M...
// 生成rotatelogs的Logger 实际生成的文件名 demo.log.YYmmddHH // demo.log是指向最新日志的链接 // 保存7天内的日志,每1小时(整点)分割一次日志 hook, err := rotatelogs.New( strings.Replace(filename, ".log", "", -1)+"-%Y%m%d%H.log", // 没有使用go风格反人类的format格式 //rotatelogs.W...
logrus本身不带日志本地文件分割功能,但是我们可以通过file-rotatelogs进行日志本地文件分割。 每次当我们写入日志的时候,logrus都会调用file-rotatelogs来判断日志是否要进行切分。关于本地日志文件分割的例子网上很多,这里不再详细介绍,奉上代码: import ( "github.com/lestrrat-go/file-rotatelogs" "github.com/rifflock...
github.com/lestrrat-go/file-rotatelogs。基于小时数进行切割的小众包。 github.com/xiaomi-tc/log15。小米基于log15写的二次封装增加了切割功能。但只有2星。 有前同事基于log15写的二次封装,但log15.v2/ext的包不太容易理解。 github.com/ngaut/log。完全不依赖第三方包。可基于日期及小时进行切割。
引入file- rotatelogs(代码路径见附录) func New(baseLogPath string) (*FileHook, error) { basename := filepath.Base(baseLogPath) if basename == "." { return nil, errors.New("error log path") } utils.CreateDir(baseLogPath) fileName := fmt.Sprintf("%s/%s", baseLogPath, basename) ...
"/lestrrat-go/file-rotatelogs" "/rifflock/lfshook" "time" ) func main() { // logger是一种相对高级的用法, 对于一个大型项目, 往往需要一个全局的logrus实例,即logger对象来记录项目所有的日志。 var log = logrus.New() log.SetReportCaller(true) ...
日志保留天数初始化一个Loggerpackage config import ( "github.com/lestrrat-go/file-rotatelogs" ...
github.com/lestrrat-go/file-rotatelogs。基于小时数进行切割的小众包。 github.com/xiaomi-tc/log15。小米基于log15写的二次封装增加了切割功能。但只有2星。 有前同事基于log15写的二次封装,但log15.v2/ext的包不太容易理解。 github.com/ngaut/log。完全不依赖第三方包。可基于日期及小时进行切割。
rotatelogs"github.com/lestrrat-go/file-rotatelogs""go.uber.org/zap""go.uber.org/zap/zapcore""io""os""time")varerrorLogger *zap.SugaredLogger func init() {//设置一些基本日志格式 具体含义还比较好理解,直接看zap源码也不难懂encoder :=zapcore.NewConsoleEncoder(zapcore.EncoderConfig{ ...