File size: 1,381 Bytes
63de3ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import logging
import os
from logging.handlers import RotatingFileHandler

from from_root import from_root

from datetime import datetime

LOG_DIR = 'logs'
# LOG_FILE = f"{datetime.now().strftime('%m_%d_%Y_%H_%M_%S')}.log"
LOG_FILE="LOG.log"
MAX_LOG_SIZE = 5 * 1024 * 1024  # 5 MB
BACKUP_COUNT = 3  # Number of backup log files to keep

# construct log file path

log_dir_path=os.path.join(from_root(),LOG_DIR)

os.makedirs(log_dir_path,exist_ok=True)

log_file_path=os.path.join(log_dir_path,LOG_FILE)


def configure_logger():
    logger=logging.getLogger()
    logger.setLevel(logging.DEBUG)

    # Defining formate
    formater = logging.Formatter("[ %(asctime)s ] %(name)s - %(levelname)s - %(message)s")

    # file handleing with rotation
    file_handler=RotatingFileHandler(log_file_path, maxBytes=MAX_LOG_SIZE, backupCount=BACKUP_COUNT)
    file_handler.setFormatter(formater)
    file_handler.setLevel(logging.DEBUG)

    console_handler=logging.StreamHandler()
    console_handler.setFormatter(formater)
    console_handler.setLevel(logging.INFO)
    # Ensure console output uses UTF-8 to prevent character mapping errors on Windows
    if hasattr(console_handler.stream, 'reconfigure'):
        console_handler.stream.reconfigure(encoding='utf-8')

    logger.addHandler(file_handler)
    logger.addHandler(console_handler)

    # return logger

configure_logger()