2

我无法让 SysLogHandler 工作,这让我抓狂。

这是我的代码:

   import logging
   import logging.handlers

   logger = logging.getLogger()
   sh = logging.handlers.SysLogHandler(address='/dev/log/', facility='local1')
   logger.addHandler(sh)

   logger.setLevel(logging.INFO)
   logger.info('Test')

并且不起作用。我已将 local1 设置为/var/log/test.log在我的 syslog.conf 中输出,但没有出现任何内容,但是如果我使用 syslog,它会按预期工作:

   import syslog

   syslog.syslog(syslog.LOG_LOCAL1, 'Test from syslog')

我在 Debian 6 上,在一个通过 uwsgi 提供的应用程序中。

你能帮助我吗?

4

3 回答 3

2

UNIX 套接字名称(地址参数)应该以文件名结尾,而不是“/”。所以它通常应该是 linux 上的 address='/dev/log' 。

于 2013-02-09T06:03:16.827 回答
0

local1作为字符串提供,但模块需要一个常量。即使是默认值LOG_USER,请参阅http://docs.python.org/2/library/logging.handlers.html#logging.handlers.SysLogHandler

于 2013-01-14T10:50:29.017 回答
-1

也许你的意思是logger.setLevel()而不是logger.setLever().

还有,你为什么要重新import logging.handlers-?

于 2012-07-15T17:40:24.427 回答