Source code for metobs_toolkit.backend_collection.loggingmodule

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Logging utilities for the MetObs Toolkit.

Provides functions to add file and stream handlers to the toolkit logger.

Created on Fri Aug  2 14:23:30 2024

@author: thoverga
"""

import os
import logging
from datetime import datetime

logger = logging.getLogger("<metobs_toolkit>")


[docs] def add_FileHandler( trglogfile: str, setlvl: str = "DEBUG", logformat: str = "LOG:: %(levelname)s - %(message)s", clearlog: bool = True, ) -> None: """ Add a FileHandler to the Toolkit logger. A FileHandler directs the logs generated by the `metobs_toolkit` to a file. Parameters ---------- trglogfile : str Path of the target log file. setlvl : {"DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"}, optional The logger level for the FileHandler. See https://docs.python.org/3/library/logging.html#levels for more details. The default is "DEBUG". logformat : str, optional The format of the log messages. The default is "LOG:: %(levelname)s - %(message)s". clearlog : bool, optional If True, the `trglogfile` is cleared before adding the FileHandler. The default is True. Returns ------- None """ logger.debug("Entering add_FileHandler()") if clearlog: if os.path.isfile(trglogfile): os.remove(trglogfile) # Create the Handler for logging data to a file - will be inherited for children file_handler = logging.FileHandler(filename=trglogfile) file_handler.setLevel(setlvl.upper()) # set handler level # Create a Formatter for formatting the log messages file_logger_formatter = logging.Formatter(logformat) file_handler.setFormatter(file_logger_formatter) # Add the Handler to the Logger rootlog = logging.getLogger("<metobs_toolkit>") rootlog.addHandler(file_handler) rootlog.debug(f"FileHandler set at {datetime.now()}")
[docs] def add_StreamHandler( setlvl: str = "DEBUG", logformat: str = "LOG:: %(levelname)s - %(message)s" ) -> None: """ Add a StreamHandler to the Toolkit logger. A StreamHandler directs the logs generated by the `metobs_toolkit` to `sys.stderr`. Parameters ---------- setlvl : str, optional The logger level for the StreamHandler. Must be one of ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]. See https://docs.python.org/3/library/logging.html#levels for more details. Default is "DEBUG". logformat : str, optional The format string for log messages. Default is "LOG:: %(levelname)s - %(message)s". Returns ------- None """ logger.debug("Entering add_StreamHandler()") # Get rootlogger rootlog = logging.getLogger("<metobs_toolkit>") rootlog.setLevel(logging.DEBUG) # set rootlogger on debug # Create StreamHandler streamhandler = logging.StreamHandler() streamhandler.setLevel(setlvl.upper()) stream_logger_formatter = logging.Formatter(logformat) streamhandler.setFormatter(stream_logger_formatter) # Add the Handler to the Logger rootlog.addHandler(streamhandler) rootlog.info(f"StreamHandler set at {datetime.now()}")