Logcheck配置食谱
项目描述
简单的logcheck食谱
在您的构建过程中生成日志文件的程序可以从定期检查这些日志文件中受益。
Logcheck是一个Unix实用工具,可以遍历您的日志文件,并将您感兴趣的行通过邮件发送给您,前提是您正确地通过忽略配置它。
tha.recipe.logcheck提供了一种为logcheck设置一组本地配置文件的方法。要实际使用它,建议使用z3c.recipe.usercrontab。提供${logcheck:command}选项以实现易于集成。
详细文档
支持选项
食谱支持以下选项
- logfiles
日志文件列表是一个或多个需要由logcheck工具处理的日志文件的集合。此参数是必需的。
- 接收者
一个电子邮件地址,用作logcheck电子邮件的接收者。此参数是必需的。
- 忽略
多行正则表达式。如果正则表达式匹配,则匹配的行将被排除在logcheck电子邮件之外。
- 主题
用于电子邮件主题的主题。注意:仅为主题的一部分,logcheck本身会附加/前缀日期等。
示例用法
我们将首先创建一个使用该配方构建的buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = logcheck ... ... [logcheck] ... recipe = tha.recipe.logcheck ... logfiles = var/example.log ... recipient = someone@example.com ... subject = my site ... """)
运行buildout将在parts和var目录中安装目录结构
>>> print 'start', system(buildout) start... Installing logcheck. logcheck: Created /sample-buildout/var/logcheck logcheck: Created /sample-buildout/var/logcheck/state logcheck: Created /sample-buildout/parts/logcheck logcheck: Created /sample-buildout/parts/logcheck/cracking.d logcheck: Created /sample-buildout/parts/logcheck/cracking.ignore.d logcheck: Created /sample-buildout/parts/logcheck/violations.d logcheck: Created /sample-buildout/parts/logcheck/violations.ignore.d logcheck: Created /sample-buildout/parts/logcheck/ignore.d.paranoid logcheck: Created /sample-buildout/parts/logcheck/ignore.d.server logcheck: Created /sample-buildout/parts/logcheck/ignore.d.workstation <BLANKLINE> >>> ls('var/logcheck') d state >>> ls('parts/logcheck') d cracking.d d cracking.ignore.d d ignore.d.paranoid d ignore.d.server d ignore.d.workstation - logcheck.conf - logcheck.logfiles d violations.d d violations.ignore.d >>> ls('bin') - buildout
日志文件配置文件列出日志文件
>>> cat('parts/logcheck/logcheck.logfiles') /sample-buildout/var/example.log
通用配置文件列出正确的目录
>>> cat('parts/logcheck/logcheck.conf') REPORTLEVEL="workstation" SENDMAILTO="someone@example.com" FQDN=0 RULEDIR="/sample-buildout/parts/logcheck" LOCKFILE="/sample-buildout/var/logcheck/lock" LOGFILES_LIST="/sample-buildout/parts/logcheck/logcheck.logfiles" STATEDIR="/sample-buildout/var/logcheck/state" EVENTSSUBJECT="my site"
如果您未指定主题,则默认回退为检查的文件名(自0.4版起增加)
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = logcheck ... ... [logcheck] ... recipe = tha.recipe.logcheck ... logfiles = var/example.log ... recipient = someone@example.com ... """) >>> print 'start', system(buildout) start Uninstalling logcheck. Installing logcheck. <BLANKLINE> >>> cat('parts/logcheck/logcheck.conf') REPORTLEVEL="workstation" SENDMAILTO="someone@example.com" FQDN=0 RULEDIR="/sample-buildout/parts/logcheck" LOCKFILE="/sample-buildout/var/logcheck/lock" LOGFILES_LIST="/sample-buildout/parts/logcheck/logcheck.logfiles" STATEDIR="/sample-buildout/var/logcheck/state" EVENTSSUBJECT="/sample-buildout/var/example.log"
指定两个日志文件是可能的
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = logcheck ... ... [logcheck] ... recipe = tha.recipe.logcheck ... logfiles = ... var/example.log ... var/emergency.log ... recipient = someone@example.com ... subject = my site ... """) >>> print 'start', system(buildout) start Uninstalling logcheck. Installing logcheck. <BLANKLINE> >>> cat('parts/logcheck/logcheck.logfiles') /sample-buildout/var/example.log /sample-buildout/var/emergency.log
策略
此配方执行的logcheck设置非常简单。创建所需的logcheck目录,但大部分留空。这意味着原则上所有日志文件消息都将通过电子邮件发送。
这显然不是预期结果。因此,如果您指定了它们,则在ignore.d.workstation目录中有一个包含忽略正则表达式的文件。
>>> ls('parts/logcheck/ignore.d.workstation')
我们指定一个正则表达式
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = logcheck ... ... [logcheck] ... recipe = tha.recipe.logcheck ... logfiles = var/example.log ... recipient = someone@example.com ... ignores = ... ^.+INFO.* ... """) >>> print 'start', system(buildout) start... Uninstalling logcheck. Installing logcheck. logcheck: Writing file with 1 ignore patterns: /...station/logcheck-ignores <BLANKLINE> >>> ls('parts/logcheck/ignore.d.workstation') - logcheck-ignores >>> cat ('parts/logcheck/ignore.d.workstation/logcheck-ignores') ^.+INFO.*
logcheck应该从cronjob调用。该配方提供了一个选项,列出可以从其他配方使用的正确命令
>>> write('crontab', '') >>> write('buildout.cfg', ... """ ... [buildout] ... parts = logcheck crontab ... ... [logcheck] ... recipe = tha.recipe.logcheck ... logfiles = var/example.log ... recipient = someone@example.com ... ignores = ... ^.+INFO.* ... ... [crontab] ... recipe = z3c.recipe.usercrontab ... times = */5 * * * * ... command = ${logcheck:command} ... readcrontab = cat ${buildout:directory}/crontab ... writecrontab = cat > ${buildout:directory}/crontab ... ... """) >>> print 'start', system(buildout) start... Updating logcheck. Installing crontab. >>> cat('crontab') <BLANKLINE> # Generated by /sample-buildout [crontab] */5 * * * * /usr/sbin/logcheck -c /sample-buildout/parts/logcheck/logcheck.conf # END /sample-buildout [crontab] <BLANKLINE>
致谢
tha.recipe.logcheck 的变更日志
1.1 (2009-12-18)
文档和许可更新。[reinout]
调整了crontab配方中的测试。[reinout]
1.0 (2009-05-27)
稍微清理了代码(bootstrap.py在正确位置等)。[reinout]
0.4 (2009-05-22)
默认主题现在是第一个日志文件的完整路径名。[reinout]
稍微进行了更多测试。[reinout]
0.3 (2009-04-21)
允许设置主题的选项(“subject”)。(好吧,至少是主题的一部分)。[reinout]
0.2 (2009-03-30)
修复了忽略文件生成中的拼写错误。[reinout]
0.1 (2009-03-17)
为在crontab配方中使用添加了“command”选项。[reinout]
在var/和parts/中创建logcheck目录和配置文件。[reinout]
使用ZopeSkel创建了配方。[reinout]