Python 2.7: setlogmask(0) 不禁用系统日志
Python 2.7: setlogmask(0) not disabling syslog
我是Python新手,下面的代码写了下面的消息给/var/log/syslog
May 8 22:14:22.531833 almach <info>./test.txt: HELLO 01
May 8 22:14:22.531853 almach <info>./test.txt: HELLO 02
May 8 22:14:22.531860 almach <info>./test.txt: HELLO 03
那么,为什么
消息被写入 /var/log/syslog 而不是 ./test.txt?
setlogmask(0) 无效,消息 "HELLO 02" 已写入 syslog?
此外,我在 Linux 机器上测试了代码,该机器有 demon rsyslogd 运行,它可能以某种方式影响了我的代码。
from syslog import syslog, setlogmask, LOG_INFO, openlog
openlog('./test.txt')
syslog(LOG_INFO, "HELLO 01")
setlogmask(0)
syslog(LOG_INFO, "HELLO 02")
setlogmask(255)
syslog(LOG_INFO, "HELLO 03")
来自 syslog.openlog
手册:
The optional ident keyword argument is a string which is prepended to every message, and defaults to sys.argv[0]
with leading path components stripped
要将日志保存在单独的文件中,请使用 logging.handlers.SysLogHandler
:How to configure logging to syslog in Python?
您需要使用 LOG_MASK(0)
来避免写入 HELLO 02
并且在写入 HELLO 03
:
之前记住掩码的先前值以恢复它
from syslog import syslog, setlogmask, LOG_INFO, LOG_MASK, openlog
openlog('./test.txt')
syslog(LOG_INFO, "HELLO 01")
mask = setlogmask(LOG_MASK(0))
syslog(LOG_INFO, "HELLO 02")
setlogmask(mask)
syslog(LOG_INFO, "HELLO 03")
结果/var/log/syslog
:
May 9 01:49:39 sanyash-ub16 ./test.txt: HELLO 01
May 9 01:49:39 sanyash-ub16 ./test.txt: HELLO 03
我是Python新手,下面的代码写了下面的消息给/var/log/syslog
May 8 22:14:22.531833 almach <info>./test.txt: HELLO 01
May 8 22:14:22.531853 almach <info>./test.txt: HELLO 02
May 8 22:14:22.531860 almach <info>./test.txt: HELLO 03
那么,为什么
消息被写入 /var/log/syslog 而不是 ./test.txt?
setlogmask(0) 无效,消息 "HELLO 02" 已写入 syslog?
此外,我在 Linux 机器上测试了代码,该机器有 demon rsyslogd 运行,它可能以某种方式影响了我的代码。
from syslog import syslog, setlogmask, LOG_INFO, openlog
openlog('./test.txt')
syslog(LOG_INFO, "HELLO 01")
setlogmask(0)
syslog(LOG_INFO, "HELLO 02")
setlogmask(255)
syslog(LOG_INFO, "HELLO 03")
来自 syslog.openlog
手册:
The optional ident keyword argument is a string which is prepended to every message, and defaults to
sys.argv[0]
with leading path components stripped
要将日志保存在单独的文件中,请使用 logging.handlers.SysLogHandler
:How to configure logging to syslog in Python?
您需要使用 LOG_MASK(0)
来避免写入 HELLO 02
并且在写入 HELLO 03
:
from syslog import syslog, setlogmask, LOG_INFO, LOG_MASK, openlog
openlog('./test.txt')
syslog(LOG_INFO, "HELLO 01")
mask = setlogmask(LOG_MASK(0))
syslog(LOG_INFO, "HELLO 02")
setlogmask(mask)
syslog(LOG_INFO, "HELLO 03")
结果/var/log/syslog
:
May 9 01:49:39 sanyash-ub16 ./test.txt: HELLO 01
May 9 01:49:39 sanyash-ub16 ./test.txt: HELLO 03