gpt4 book ai didi

Python SysLogHandler 不工作 : socket. 错误 'Connection refused'

转载 作者:太空狗 更新时间:2023-10-30 02:32:17 30 4
gpt4 key购买 nike

我正在尝试配置 Python 应用程序以使用标准 Linux 系统日志记录到/var/log/messages。但是,当我尝试创建系统日志处理程序时,出现错误 socket.error: [Errno 111] Connection refused

>>> import logging
>>> import logging.handlers
>>> logger = logging.getLogger("my_logger")
>>> logger.setLevel(logging.DEBUG)
>>> handler = logging.handlers.SysLogHandler(facility=logging.handlers.SysLogHandler.LOG_DAEMON, address="/var/log/messages")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/logging/handlers.py", line 715, in __init__
self._connect_unixsocket(address)
File "/usr/lib64/python2.6/logging/handlers.py", line 731, in _connect_unixsocket
self.socket.connect(address)
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused

/etc/rsyslog.conf 配置了以下行:

kern.notice;*.err;local0.info;mail.none;authpriv.none;cron.none;local1.none;daemon.notice /var/log/messages

我猜问题出在 syslog 的配置中,但据我所知,我做对了:

  • 我正在尝试创建 Python SysLogHandler,并告诉它要使用哪个文件
  • 我告诉 SysLogHandler 使用 DAEMON 工具
  • rsyslog.conf 设置为将守护程序日志发送到/var/log/messages(连同其他日志)

我还应该做些什么来完成这项工作吗?

之前我只是使用了一个logging.FileHandler,但这不能正常工作,因为当消息文件换行时,Python 会继续记录到旧文件。

最佳答案

您需要指向实际的 unix 域套接字,而不是日志文件。 Python docs

试试这个:

import logging
import logging.handlers
logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.SysLogHandler(
facility=logging.handlers.SysLogHandler.LOG_DAEMON, address="/dev/log")

关于Python SysLogHandler 不工作 : socket. 错误 'Connection refused',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19136539/

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