logging.SyslogHandlerを使用してTCP経由でsyslogサーバにログを送信するプロセスがあります。 残念ながら、何らかの理由でSyslogサーバが再起動した場合、プロセスはログの送信を停止し、接続を再確立できません。Python SysLogHandler over TCP:接続損失の処理
誰かがこの動作を克服し、logging.SyslogHandlerに強制的に接続を再確立させる方法を知っているのだろうかと思っていました。
コードハンドラを使用するためには、のようになります。
import logging
import logging.handlers
import logging.config
logging.config.fileConfig('logging.cfg')
logging.debug("debug log message")
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
私は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
私はどんな洞察にも感謝します。 ありがとう!
'(「localhostの」、514)'意味 – dsgdfg