utils.logging

 1import logging
 2import os
 3from datetime import datetime
 4from logging import StreamHandler
 5
 6from colorlog import ColoredFormatter
 7
 8
 9def configure_logging():
10    """Configures the logging for the application."""
11    os.makedirs("logs/dataengine", exist_ok=True)
12
13    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
14    log_filename = f"logs/dataengine/{timestamp}_dataengine.log"
15
16    colored_formatter = ColoredFormatter(
17        "%(log_color)s%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(message)s",
18        datefmt=None,
19        reset=True,
20        log_colors={
21            "DEBUG": "cyan",
22            "INFO": "",
23            "WARNING": "yellow",
24            "ERROR": "red",
25            "CRITICAL": "red,bg_white",
26        },
27        secondary_log_colors={},
28        style="%",
29    )
30
31    # Set pymongo logger to only show WARN and above
32    logging.getLogger("pymongo").setLevel(logging.WARNING)
33
34    # Create console handler with INFO level
35    console_handler = StreamHandler()  # Changed from ColoredFormatter to StreamHandler
36    console_handler.setFormatter(colored_formatter)
37    console_handler.setLevel(logging.INFO)
38
39    # Create file handler with DEBUG level
40    file_handler = logging.FileHandler(log_filename)
41    file_handler.setLevel(logging.DEBUG)
42
43    # Create formatter and add it to the handlers
44    formatter = logging.Formatter(
45        "%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(message)s"
46    )
47    file_handler.setFormatter(formatter)
48
49    logging.basicConfig(
50        level=logging.DEBUG,  # Set root logger to DEBUG to capture all logs
51        format="%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(message)s",
52        handlers=[
53            console_handler,  # Log INFO and above to console with colors
54            file_handler,  # Log DEBUG and above to file
55        ],
56        force=True,
57    )
def configure_logging():
10def configure_logging():
11    """Configures the logging for the application."""
12    os.makedirs("logs/dataengine", exist_ok=True)
13
14    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
15    log_filename = f"logs/dataengine/{timestamp}_dataengine.log"
16
17    colored_formatter = ColoredFormatter(
18        "%(log_color)s%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(message)s",
19        datefmt=None,
20        reset=True,
21        log_colors={
22            "DEBUG": "cyan",
23            "INFO": "",
24            "WARNING": "yellow",
25            "ERROR": "red",
26            "CRITICAL": "red,bg_white",
27        },
28        secondary_log_colors={},
29        style="%",
30    )
31
32    # Set pymongo logger to only show WARN and above
33    logging.getLogger("pymongo").setLevel(logging.WARNING)
34
35    # Create console handler with INFO level
36    console_handler = StreamHandler()  # Changed from ColoredFormatter to StreamHandler
37    console_handler.setFormatter(colored_formatter)
38    console_handler.setLevel(logging.INFO)
39
40    # Create file handler with DEBUG level
41    file_handler = logging.FileHandler(log_filename)
42    file_handler.setLevel(logging.DEBUG)
43
44    # Create formatter and add it to the handlers
45    formatter = logging.Formatter(
46        "%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(message)s"
47    )
48    file_handler.setFormatter(formatter)
49
50    logging.basicConfig(
51        level=logging.DEBUG,  # Set root logger to DEBUG to capture all logs
52        format="%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(message)s",
53        handlers=[
54            console_handler,  # Log INFO and above to console with colors
55            file_handler,  # Log DEBUG and above to file
56        ],
57        force=True,
58    )

Configures the logging for the application.