gpt4 book ai didi

python - 如何在 Mac OS X * 和 * Debian 上使用 SysLogHandler 或 syslog 从 Python 登录到 syslog (7)

转载 作者:IT王子 更新时间:2023-10-29 00:26:11 25 4
gpt4 key购买 nike

我在 SO 上遵循了几个答案,但无济于事。

我正在 Macbook (Yosemite) 上开发,但我们的测试/生产机器是 Debian 7(使用 rsyslog)。我正在尝试以一种既可以在本地工作又可以在本地不工作的方式注销到系统日志。

我尝试了使用 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 系统日志中。但是,当我在 Debian 7 上更改 address='/dev/log' 时......没有骰子。

然而:

import syslog

syslog.openlog(ident='im_a_lumberjack', facility=syslog.LOG_LOCAL1)
syslog.syslog(syslog.WARNING, 'Watch out!')

适用于 Debian 7,但不适用于 Mac。

我真的很想获得一个适用于两个平台的日志记录解决方案。显然地址会有所不同,但我已经在配置中进行了设置。

那么如何让 syslog 在 Mac Debian 上工作?

编辑:

作为进一步的信息 - 我发现我的 SysLogHandler 似乎可能没有正确使用设施(?)。消息 被 syslog 拾取,但它们将被包罗万象,这让我相信它们没有被 LOG_LOCAL1

标记

最佳答案

原来 SysLogHandler 期望的 facility 不是 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')

在两个系统上都做对了。

关于python - 如何在 Mac OS X * 和 * Debian 上使用 SysLogHandler 或 syslog 从 Python 登录到 syslog (7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30125412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com