Source code for noctua.utils.logger

#!/usr/bin/env python

"""Custom format log"""

# System modules
import datetime
import os  # Will be used if log_path only returns a directory
import sys

# Third-party modules
from loguru import logger

# Other templates
from .structure import log_path


[docs] def mylog(): "logger function" logger.remove() # Remove default handler to prevent duplicate console logs time_fmt = "{time:YYYY-MM-DD HH:mm:ss.SSSSSS!UTC} " level_fmt = "<level>{level: <8}</level> " message_fmt = "| {message} " stack_fmt = "<bold>({module}.{function}:{line})</bold>" fmt = time_fmt + level_fmt + message_fmt + stack_fmt # On standard output logger.add( sys.stderr, format=fmt, level="DEBUG" ) full_log_file_path = log_path() logger.add( full_log_file_path, format=fmt, colorize=True, # For file logs rotation="16:19", # Local time # retention="7 days", # Old logs level="DEBUG" ) # Custom levels logger.level("DEBUG", color="<magenta><bold>") logger.level("INFO", color="<green><bold>") return logger
# This ensures mylog() is called only once. log = mylog()
[docs] def main(): """Main function""" # log is already initialized globally log.debug("This is a debug message.") log.info("This is an info message.") log.warning("This is a warning message.") log.error("This is an error message.") log.critical("This is a critical message.")
if __name__ == "__main__": main()