Source code for pkglts.logging_tools

"""
Base setting for logging in the package.
This module is executed when importing pkglts.
"""
import logging
import logging.handlers

from .config import pkglts_dir


[docs] def rolling_logs(logger): """Associate log files using a rolling mechanism""" nb_logs = 5 tpl = pkglts_dir / "info.log.%d" pth = pkglts_dir / f"info.{nb_logs:d}.log" if pth.exists(): pth.unlink() for i in range(nb_logs, 0, -1): pth = pkglts_dir / f"info.{i - 1:d}.log" if pth.exists(): pth.rename(pkglts_dir / f"info.{i:d}.log") pth = pkglts_dir / "info.log" if pth.exists(): pth.rename(tpl % 0) info_ch = logging.FileHandler(str(pth), 'w') logger.addHandler(info_ch)
[docs] def main(verbosity): """Set logging configuration. Args: verbosity (int): verbosity level Returns: None """ if verbosity > 2: verbosity = 2 vlevel = [logging.WARNING, logging.INFO, logging.DEBUG][verbosity] fmt = logging.Formatter('%(asctime)s %(levelname)s (%(name)s): %(message)s') wng_ch = logging.StreamHandler() wng_ch.setLevel(vlevel) wng_ch.setFormatter(fmt) logger = logging.getLogger("pkglts") logger.setLevel(vlevel) logger.addHandler(wng_ch)
# try: # # rolling_logs(logger) # info_ch = logging.StreamHandler() # info_ch.setLevel(logging.INFO) # info_ch.setFormatter(fmt) # # logger.addHandler(info_ch) # except IOError: # print("no info handler") if __name__ == '__main__': main(0)