fix: use os.path.exists check for /dev/log instead of dead-code OSError catch

This commit is contained in:
2026-04-25 16:36:00 +02:00
parent 1c9b6c1ca9
commit 65ceb31d8d
+11 -15
View File
@@ -15,6 +15,7 @@ import socket
import sys import sys
import time import time
from hashlib import md5 from hashlib import md5
from logging.handlers import SysLogHandler
from pathlib import Path from pathlib import Path
from typing import Dict, List, Optional from typing import Dict, List, Optional
@@ -588,31 +589,23 @@ def daemonize(
def _reconfigure_logging_for_daemon(log_level: int) -> None: def _reconfigure_logging_for_daemon(log_level: int) -> None:
"""Replace StreamHandlers (now writing to /dev/null) with a SysLogHandler.""" """Replace StreamHandlers (now writing to /dev/null) with a SysLogHandler."""
from logging.handlers import SysLogHandler
root = logging.getLogger() root = logging.getLogger()
for handler in root.handlers[:]: for handler in root.handlers[:]:
root.removeHandler(handler) root.removeHandler(handler)
handler.close() handler.close()
try: use_udp_fallback = not os.path.exists("/dev/log")
syslog_handler = SysLogHandler(
address="/dev/log", if use_udp_fallback:
facility=SysLogHandler.LOG_DAEMON,
)
except OSError:
syslog_handler = SysLogHandler( syslog_handler = SysLogHandler(
address=("localhost", 514), address=("localhost", 514),
facility=SysLogHandler.LOG_DAEMON, facility=SysLogHandler.LOG_DAEMON,
) )
# Attach the fallback first so the warning reaches syslog else:
syslog_handler.setFormatter( syslog_handler = SysLogHandler(
logging.Formatter("hbc[%(process)d]: %(name)s %(levelname)s: %(message)s") address="/dev/log",
facility=SysLogHandler.LOG_DAEMON,
) )
root.addHandler(syslog_handler)
root.setLevel(log_level)
logging.warning("/dev/log not found, using syslog UDP localhost:514")
return
syslog_handler.setFormatter( syslog_handler.setFormatter(
logging.Formatter("hbc[%(process)d]: %(name)s %(levelname)s: %(message)s") logging.Formatter("hbc[%(process)d]: %(name)s %(levelname)s: %(message)s")
@@ -620,6 +613,9 @@ def _reconfigure_logging_for_daemon(log_level: int) -> None:
root.addHandler(syslog_handler) root.addHandler(syslog_handler)
root.setLevel(log_level) root.setLevel(log_level)
if use_udp_fallback:
logging.warning("/dev/log not found, using syslog UDP localhost:514")
def build_parser(): def build_parser():
"""Build argument parser.""" """Build argument parser."""