From 3eedefc2843e9c07aaf748b21d97bbc1b2018810 Mon Sep 17 00:00:00 2001 From: DJ2LS Date: Thu, 18 Nov 2021 20:49:32 +0100 Subject: [PATCH] new logging type --- tnc/log_handler.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 tnc/log_handler.py diff --git a/tnc/log_handler.py b/tnc/log_handler.py new file mode 100644 index 00000000..c4d46aee --- /dev/null +++ b/tnc/log_handler.py @@ -0,0 +1,63 @@ +# https://www.structlog.org/en/stable/standard-library.html +def setup_logging(filename): + + import logging.config + import structlog + + timestamper = structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M:%S") + pre_chain = [ + # Add the log level and a timestamp to the event_dict if the log entry + # is not from structlog. + structlog.stdlib.add_log_level, + timestamper, + ] + + logging.config.dictConfig({ + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "plain": { + "()": structlog.stdlib.ProcessorFormatter, + "processor": structlog.dev.ConsoleRenderer(colors=False), + "foreign_pre_chain": pre_chain, + }, + "colored": { + "()": structlog.stdlib.ProcessorFormatter, + "processor": structlog.dev.ConsoleRenderer(colors=True), + "foreign_pre_chain": pre_chain, + }, + }, + "handlers": { + "default": { + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "colored", + }, + "file": { + "level": "DEBUG", + "class": "logging.handlers.WatchedFileHandler", + "filename": filename + '.log', + "formatter": "plain", + }, + }, + "loggers": { + "": { + "handlers": ["default", "file"], + "level": "DEBUG", + "propagate": True, + }, + } + }) + structlog.configure( + processors=[ + structlog.stdlib.add_log_level, + structlog.stdlib.PositionalArgumentsFormatter(), + timestamper, + structlog.processors.StackInfoRenderer(), + structlog.processors.format_exc_info, + structlog.stdlib.ProcessorFormatter.wrap_for_formatter, + ], + logger_factory=structlog.stdlib.LoggerFactory(), + wrapper_class=structlog.stdlib.BoundLogger, + cache_logger_on_first_use=True, + )