lfshook, 用于 golang logrus记录器的本地文件系统钩子

分享于 

3分钟阅读

GitHub

  繁體 雙語
A local file system hook for golang logrus logger
  • 源代码名称:lfshook
  • 源代码网址:http://www.github.com/rifflock/lfshook
  • lfshook源代码文档
  • lfshook源代码下载
  • Git URL:
    git://www.github.com/rifflock/lfshook.git
    Git Clone代码到本地:
    git clone http://www.github.com/rifflock/lfshook
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/rifflock/lfshook
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    用于Logrus的本地 文件系统 钩子

    GoDoc

    有时开发者喜欢直接写到 文件系统 上的文件。 这是一个用于 logrus的钩子,它允许用户执行该操作。 日志级别在钩子实例化时是动态的,因此它可以在某些或者全部级别上进行日志记录。

    示例

    import (
     "github.com/rifflock/lfshook""github.com/sirupsen/logrus")varLog *logrus.LoggerfuncNewLogger() *logrus.Logger {
     if Log!= nil {
     return Log
     }
     pathMap:= lfshook.PathMap{
     logrus.InfoLevel: "/var/log/info.log",
     logrus.ErrorLevel: "/var/log/error.log",
     }
     Log = logrus.New()
     Log.Hooks.Add(lfshook.NewHook(
     pathMap,
     &logrus.JSONFormatter{},
     ))
     return Log
    }

    格式化程序

    当写入本地文件时,lfshook 将从任何 TextFormatter 类型格式化程序中去除颜色,因为颜色代码在文件中看起来不。

    如果没有通过 lfshook.NewHook 提供格式化程序,将使用默认的文本格式化程序。

    日志旋转

    为了启用自动日志旋转,可以提供 io.Writer 而不是日志文件的路径字符串。 诸如 go-file-rotatelogs的包相结合,日志旋转很容易实现。

    package mainimport (
     "github.com/lestrrat/go-file-rotatelogs""github.com/rifflock/lfshook""github.com/sirupsen/logrus")varLog *logrus.LoggerfuncNewLogger() *logrus.Logger {
     if Log!= nil {
     return Log
     }
     path:="/var/log/go.log"writer:= rotatelogs.New(
     path+".%Y%m%d%H%M",
     rotatelogs.WithLinkName(path),
     rotatelogs.WithMaxAge(time.Duration(86400)*time.Second),
     rotatelogs.WithRotationTime(time.Duration(604800)*time.Second),
     )
     logrus.Hooks.Add(lfshook.NewHook(
     lfshook.WriterMap{
     logrus.InfoLevel: writer,
     logrus.ErrorLevel: writer,
     },
     &logrus.JSONFormatter,
     ))
     Log = logrus.New()
     Log.Hooks.Add(lfshook.NewHook(
     pathMap,
     &logrus.JSONFormatter{},
     ))
     return Log
    }

    :

    运行go应用程序的用户必须对所选日志文件具有读/写权限。 如果文件还不存在,那么用户必须拥有对目标目录的权限。


    文件  SYS  系统  log  LOC  Local  
    相关文章