小编n3g*_*g4s的帖子

TCP上的Python SysLogHandler:处理连接丢失

我有一个进程使用logging.SyslogHandler通过TCP将日志发送到syslog服务器.不幸的是,如果由于某种原因重新启动系统日志服务器,该过程将停止发送日志,并且无法重新建立连接.

我想知道是否有人知道克服此行为的方法并强制logging.SyslogHandler重新建立连接.

使用处理程序的代码类似于:

import logging
import logging.handlers
import logging.config

logging.config.fileConfig('logging.cfg')
logging.debug("debug log message")
Run Code Online (Sandbox Code Playgroud)

logging.cfg:

[loggers]
keys=root,remote

[handlers]
keys=local,remote

[logger_remote]
qualname=remote
level=INFO
handlers=remote

[logger_root]
qualname=root
level=DEBUG
handlers=local

[handler_local]
class=handlers.StreamHandler
level=DEBUG
formatter=local
args=(sys.stdout,)

[handler_remote]
class=handlers.SysLogHandler
level=DEBUG
formatter=remote
args=(('localhost', 514), handlers.SysLogHandler.LOG_USER, 1)

[formatters]
keys=local,remote

[formatter_local]
format=%(module)s %(levelname)s %(message)s

[formatter_remote]
format=%(asctime)s %(message)s
Run Code Online (Sandbox Code Playgroud)

syslog服务器重启后我遇到的错误是:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/logging/handlers.py", line 866, in emit
    self.socket.sendall(msg)
  File "/usr/local/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud)

我很感激任何见解.谢谢!

python tcp syslog

9
推荐指数
2
解决办法
1185
查看次数

标签 统计

python ×1

syslog ×1

tcp ×1