improve logging a bit

This commit is contained in:
mike 2024-06-09 06:51:51 -07:00
parent 2e6d268de0
commit 1564f4cf8a
3 changed files with 68 additions and 15 deletions

View File

@ -28,10 +28,22 @@ import yaml
class BackupRotator: class BackupRotator:
def __init__(self, debug:bool = False): def __init__(
self,
debug: bool = False,
systemd: bool = False,
write_to_syslog: bool = False
):
self.__logger = Logger(name=type(self).__name__, debug=debug) self.__logger = Logger(
self.__config_helper = Config(logger=self.__logger) name=type(self).__name__,
debug=debug,
systemd=systemd,
write_to_syslog=write_to_syslog,
)
self.__config_helper = Config(
logger=self.__logger
)
self.__dry_run = False self.__dry_run = False
self.__configs = [] self.__configs = []

View File

@ -7,13 +7,26 @@ import sys
class Logger: class Logger:
def __init__(self, name: str, debug: bool = False): def __init__(
self,
name: str,
debug: bool = False,
write_to_syslog: bool = False,
systemd: bool = False
):
self.__name = name self.__name = name
self.__debug = debug
self.__write_to_syslog = write_to_syslog
self.__systemd = systemd
self._init_logger()
def _init_logger(self):
self.__logger = logging.getLogger(self.__name) self.__logger = logging.getLogger(self.__name)
if debug: if self.__debug:
level = logging.DEBUG level = logging.DEBUG
else: else:
level = logging.INFO level = logging.INFO
@ -35,7 +48,9 @@ class Logger:
) )
handler.setLevel(level) handler.setLevel(level)
handler.addFilter(lambda entry: entry.levelno <= logging.INFO) handler.addFilter(lambda entry: entry.levelno <= logging.INFO)
handler.setFormatter(formatter_full) handler.setFormatter(
formatter if self.__systemd else formatter_full
)
self.__logger.addHandler(handler) self.__logger.addHandler(handler)
# Console output / stream handler (STDERR) # Console output / stream handler (STDERR)
@ -43,16 +58,19 @@ class Logger:
stream=sys.stderr stream=sys.stderr
) )
handler.setLevel(logging.WARNING) handler.setLevel(logging.WARNING)
handler.setFormatter(formatter_full) handler.setFormatter(
formatter if self.__systemd else formatter_full
)
self.__logger.addHandler(handler) self.__logger.addHandler(handler)
# Syslog handler # Syslog handler
handler = SysLogHandler( if self.__write_to_syslog:
address="/dev/log" handler = SysLogHandler(
) address="/dev/log"
handler.setLevel(level) )
handler.setFormatter(formatter) handler.setLevel(level)
self.__logger.addHandler(handler) handler.setFormatter(formatter)
self.__logger.addHandler(handler)
# This is annoying inside cron # This is annoying inside cron
self.debug("Test debug log") self.debug("Test debug log")

25
main.py
View File

@ -21,6 +21,27 @@ def main():
help="Verbose/Debug logging mode" help="Verbose/Debug logging mode"
) )
parser.add_argument(
"--systemd",
default=False,
dest="systemd",
action="store_true",
help=(
"Pass if this program will be spawned inside systemd"
" or another system that already adds timestamps to log messages."
)
)
parser.add_argument(
"--syslog", "--write-to-syslog",
default=False,
dest="write_to_syslog",
action="store_true",
help=(
"Pass if you'd like this program to write to syslog."
)
)
parser.add_argument( parser.add_argument(
"--config", "-c", "--config", "-c",
dest="config_files", dest="config_files",
@ -40,7 +61,9 @@ def main():
args = parser.parse_args() args = parser.parse_args()
rotator = BackupRotator( rotator = BackupRotator(
debug=args.debug debug=args.debug,
systemd=args.systemd,
write_to_syslog=args.write_to_syslog,
) )
rotator.run( rotator.run(
configs=args.config_files, configs=args.config_files,