Python 2.7:setlogmask(0)未禁用syslog

2024-10-03 15:31:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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

那么,为什么

  1. 消息被写入/var/log/syslog,而不是/test.txt文件?

  2. setlogmask(0)无效,消息“HELLO 02”已写入syslog?

另外,我在一台运行demon rsyslogd的Linux机器上测试了代码,它可能会以某种方式影响我的代码。你知道吗

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")

Tags: 代码testinfotxtlog消息hellovar
2条回答

^{}手册:

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.SysLogHandlerHow to configure logging to syslog in Python?

您需要使用LOG_MASK(0)来避免写入HELLO 02,并在写入HELLO 03之前记住mask的上一个值来还原它:

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

相关问题 更多 >