监视glob模式指定的任何日志文件中的关键字的守护程序
logdogs的Python项目详细描述
监视glob模式指定的任何日志文件中的关键字的守护程序。
后台日志文件由狗和用户定期检查 当根据 关键字regex。
功能
- 全局路径
- 正则表达式关键字
- 与logrotate兼容
- custmize handler函数或可调用对象 日志文件在观看< < > >之前不一定存在。
- 一只狗可以看多个日志,一个日志可以被多个 狗
用法
安装:
pip install logdogs
开始时间:
logdogs -c conf.py
停止:
kill <pid>
PID文件将被自动删除。
py是包含大写模块变量的配置文件 作为配置。下面是一个示例:
importosimportloggingLOG_FILE='logdogs.log'LOG_LEVEL='INFO'# you can even call basicConfig to customize the log insteadINTEVAL=10# secondsDAEMONIZE=TrueDIR=os.path.abspath('.')PID_FILE='logdogs.pid'STDOUT='logdogs.out'STDERR='logdogs.err'# the above 4 configurations only work when DAEMONIZE is Truelogger=logging.getLogger(__name__)classMyHandler(object):def__init__(self):self.count=0def__call__(self,file,lines):self.count+=1logger.info('...')# Do whatever you want here...DOGS={"test":{"paths":["a.log","b.log"],"handler":MyHandler(),"includes":[r"wrong"],"excludes":[r"nothing"]},"glob":{"paths":["**/*.log"],"handler":MyHandler(),"includes":[r"(?!)wrong"],}}
在这种情况下,日志狗将作为守护进程在当前目录中运行 每10秒检查一次日志文件。将监视a.log和b.log 通过狗测试和地球仪。当包含wrong但不包含 nothing写入.log,将调用两个狗的处理程序。
配置文件中的有效变量如下所述。
配置
狗
狗包括:
- 由glob模式指定的一组日志文件
- 由includes和excludes定义的筛选器
- 处理函数或可调用对象
dog是{name: attribute}形式的dict,其中name不是 important和attribute是包含以下键的dict:
处理程序
处理程序是具有以下签名的函数:
def handler(file, lines): """ file is the absolute path of the log file. lines is a list of the lines includes newline characters(\n) """ pass
默认处理程序是可调用的对象:
class Handler(object): """ default handler for log event """ def __call__(self, file, lines): print(lines)
由您来处理这个处理程序中的日志行,例如 邮寄、发送至微信等。
包括和不包括
它们是正则表达式,并且都是可选的。处理者是 如果在includes行中找到任何regex,并且在 在行中找不到排除项。也就是说,or逻辑是 在includes中应用,and逻辑在excludes中应用。
路径
path是一个列表,它支持以下形式:
- 单个文件:['/var/logs/a.log']
- 多个文件:['/var/logs/a.log', '/var/logs/b.log']
- 全局模式:['/var/logs/*.log']
- 递归glob(类似于bash上的globstar):['/var/logs/**/*.log']
- 在最后2种情况下,当监控器不存在日志文件时 开始
- 同一个日志文件可以在多个dog块中重叠
肠
两次检查之间睡眠的秒数
对数
- 日志文件:指定日志文件。如果没有,日志将被打印到stdout 指定的
- 日志级别(警告):要使用哪个日志级别
守护
- 守护进程(false):是否在 后台组,以下配置仅在后台程序化为 正确
- dir:设置工作目录,默认为/
- pid_文件:pid文件路径
- stdout:重定向stdout的位置(打印异常回溯 示例)
- stderr:重定向sterr的位置
开发
python setup.py develop
测试
python -m unittest -v test_function.TestFunction
待办事项
- 更多处理程序
- 穿线