import logging
import coloredlogs
[docs]def datetime_fmt():
return '%Y-%m-%d %H:%M:%S'
[docs]def ensure_systemd_installed():
try:
# pylint: disable=unused-import
import systemd
except ImportError:
import subprocess
import sys
subprocess.run([sys.executable, '-m', 'pip', 'install', 'systemd'], check=True)
import systemd
[docs]def setup_logging(level=None, systemd=False, syslog=False):
logfmt = '[%(asctime)s.%(msecs)03d] %(name)s %(levelname)s %(message)s'
if not systemd and not syslog:
coloredlogs.install(level=level, fmt=logfmt, datefmt=datetime_fmt(), reconfigure=True)
else:
logging.root.setLevel(level)
if syslog:
from coloredlogs import syslog
syslog.enable_system_logging(fmt=logfmt, level=level)
if systemd:
ensure_systemd_installed()
try:
from systemd.journal import JournaldLogHandler
logging.root.addHandler(JournaldLogHandler())
except ImportError:
print(('Package `systemd.journal` not available.\n'
'Please run `pip install systemd`'
'You might also need to install systemd headers: libsystemd-dev'))
import sys
sys.exit(1)