Source code for caspia.toolbox.logging

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)