我已经在这里遵循了几个答案,但没有成功。
我正在使用Macbook(Yosemite)进行开发,但是我们的测试/生产盒是Debian 7(使用rsyslog)。我正在尝试以一种既可以在本地运行又无法运行的方式注销到syslog。
我尝试了使用的选项SysLogHandler
。在Mac上可以使用:
import logging
import logging.handlers
import syslog
h = logging.handlers.SysLogHandler(address='/var/run/syslog', facility=syslog.LOG_LOCAL1)
h.ident = 'works_on_macs'
logger = logging.getLogger('i_am_a_lumberjack')
logger.addHandler(h)
logger.debug("And I don't care")
logger.info('There is a sale on today')
logger.warn('Do not touch the hot stove!')
logger.error('Sorry, times up')
logger.critical('That sure is an ugly tie')
这些消息将显示在我的mac syslog中。但是,当我address='/dev/log'
在Debian 7上进行更改时...没有骰子。
然而:
import syslog
syslog.openlog(ident='im_a_lumberjack', facility=syslog.LOG_LOCAL1)
syslog.syslog(syslog.WARNING, 'Watch out!')
适用于Debian 7,但不适用于Mac。
我非常希望能够获得一个适用于两个平台的日志记录解决方案。显然地址会有所不同,但是我已经在config中设置了。
那么,如何使syslog在Mac 和 Debian上都能正常工作?
编辑:
作为进一步的信息-我发现我的SysLogHandler似乎没有正确使用便利(?)。消息正在被拾起的系统日志,但他们要去一个包罗万象的,这使我相信他们没有得到与标记LOG_LOCAL1
事实证明facility
,SysLogHandler
期望不是 syslog.LOG_LOCAL1
或该命名空间中的任何值。
它期望'local1'
或其他字符串,如文档中所述。
只需更改
h = logging.handlers.SysLogHandler(address='/var/run/syslog', facility=syslog.LOG_LOCAL1)
至
h = logging.handlers.SysLogHandler(address='/var/run/syslog', facility='local1')
使两个系统上的一切都正确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句