gpt4 book ai didi

python - 为什么 Python 的 SysLogHandler 需要一个地址?

转载 作者:行者123 更新时间:2023-11-28 19:17:45 27 4
gpt4 key购买 nike

此代码使用 syslog 模块记录到 syslog:

import syslog

syslog.syslog(syslog.LOG_ERR, 'a')

下面是使用 logging 模块的等效代码:

import logging
from logging.handlers import SysLogHandler

logger = logging.getLogger()
logger.addHandler(SysLogHandler(address='/dev/log'))
logger.setLevel(logging.ERROR)
logger.error('a')

如果我在第二个片段中遗漏了 address 参数,它不会执行任何操作。为什么 logging 版本需要我指定一个地址,而 syslog 模块可以自行解决?

我宁愿不必指定此路径,因为它依赖于平台。我是否必须编写自己的 SysLogHandler 版本来委托(delegate)给 syslog 模块?

最佳答案

syslog.syslog API 允许您仅将事件发送到本地计算机上的系统记录器,而通过在 Python 日志记录中指定地址,您不仅可以记录到本地计算机,还可以记录到远程 syslog 服务器。因此,日志记录方法涵盖了比 syslog.syslog 更广泛的情况。另请注意,在某些平台/某些环境中,syslog.syslog 并不总是线程安全的(过去),因为底层系统调用 API 在这些环境中不是线程安全的。这可能不再是这种情况,但最好检查您平台上的 syslog 文档。有关更多背景信息,请参阅 this Python issue .

此外,您还可以使用日志记录 API(syslog 模块在 Windows 上不可用)从 Windows 计算机登录到 syslog 服务器。

关于python - 为什么 Python 的 SysLogHandler 需要一个地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487516/

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