canary_aed_streaming / app /logger_config.py
Archime's picture
add logging
b5c329a
raw
history blame
2.01 kB
import os
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
# logger_config.py
import logging
from logging.handlers import RotatingFileHandler
import os
# from nemo.utils.nemo_logging import Logger
# nemo_logger = Logger()
# nemo_logger.remove_stream_handlers()
DEBUG = os.getenv("DEBUG", "false").lower() == "true"
print(DEBUG)
# Create "logs" directory if it doesn't exist
os.makedirs("logs", exist_ok=True)
logger = logging.getLogger("app_logger") # unique name
logger.setLevel(logging.DEBUG if DEBUG else logging.INFO)
# Avoid duplicate handlers
if not logger.handlers:
formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(module)s | %(message)s")
# Console handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG if DEBUG else logging.INFO)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
# File handler
file_handler = RotatingFileHandler("logs/app.log", maxBytes=2 * 1024 * 1024, backupCount=5)
file_handler.setLevel(logging.DEBUG if DEBUG else logging.INFO)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# Startup message
logger.debug("Logger initialized (DEBUG)") if DEBUG else logger.info("Logger initialized (Production Mode)")
# --- Logger Silencing Function ---
def silence_logger(logger_name: str | None, level=logging.ERROR):
"""Sets the log level and removes StreamHandlers for a given logger."""
target_logger = logging.getLogger(logger_name)
target_logger.setLevel(level)
for handler in target_logger.handlers[:]:
if isinstance(handler, logging.StreamHandler):
target_logger.removeHandler(handler)
# Ensure messages don't propagate to the parent (root) logger
target_logger.propagate = False
# silence_logger(None, logging.CRITICAL)
# logger.propagate = True
# silence_logger("nemo_logger", logging.CRITICAL)
# silence_logger("pytorch_lightning", logging.ERROR)