Skip to content

logger_utils

logger_utils

FileLogger

A class for logging messages to a file with attempt ID information.

Source code in redesign_pipeline/utils/logger_utils.py
  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
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
class FileLogger:
    """
    A class for logging messages to a file with attempt ID information.
    """

    def __init__(self):
        """
        Initializes the FileLogger object.
        """

        self._attempt_id = '-1'
        log_dir = os.path.join(os.getcwd(), 'logs')
        os.makedirs(log_dir, exist_ok=True)
        log_file = os.path.join(log_dir, 'nervo-logs.log')
        logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s -  %(message)s',
                            datefmt='%Y-%m-%d %H:%M:%S')

        self.logger = logging.getLogger('nervo-logger')
        self.logger.setLevel(logging.DEBUG)

        formatter = logging.Formatter("%(asctime)s - %(levelname)s -  %(message)s", "%Y-%m-%d %H:%M:%S")
        file_handler = logging.FileHandler(filename=log_file, mode='a')
        file_handler.setLevel(logging.DEBUG)
        file_handler.setFormatter(formatter)
        self.logger.addHandler(file_handler)

    def set_id(self, id):
        """
        Sets the attempt ID.

        Args:
            id (str): The ID of the attempt.
        """
        self._attempt_id = str(id)

    def log(self, level, message):
        """
        Logs a message with the specified log level.

        Args:
            level (str): The log level (e.g., 'debug', 'info', 'warning', 'error', 'critical').
            message (str): The log message.
        """
        frame_records = inspect.stack()[2]  # Get the stack frame record before the logger method
        module = inspect.getmodule(frame_records[0])
        function_name = frame_records.function
        message = f'[{self._attempt_id}] - {module.__name__} - {function_name} - {message}'
        getattr(self.logger, level)(message)

    def debug(self, message):
        """
        Logs a debug message.

        Args:
            message (str): The log message.
        """
        self.log('debug', message)

    def info(self, message):
        """
        Logs an info message.

        Args:
            message (str): The log message.
        """
        self.log('info', message)

    def warning(self, message):
        """
        Logs a warning message.

        Args:
            message (str): The log message.
        """
        self.log('warning', message)

    def error(self, message):
        """
        Logs an error message.

        Args:
            message (str): The log message.
        """
        self.log('error', message)

    def critical(self, message):
        """
        Logs a critical message.

        Args:
            message (str): The log message.
        """
        self.log('critical', message)

__init__()

Initializes the FileLogger object.

Source code in redesign_pipeline/utils/logger_utils.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def __init__(self):
    """
    Initializes the FileLogger object.
    """

    self._attempt_id = '-1'
    log_dir = os.path.join(os.getcwd(), 'logs')
    os.makedirs(log_dir, exist_ok=True)
    log_file = os.path.join(log_dir, 'nervo-logs.log')
    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s -  %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')

    self.logger = logging.getLogger('nervo-logger')
    self.logger.setLevel(logging.DEBUG)

    formatter = logging.Formatter("%(asctime)s - %(levelname)s -  %(message)s", "%Y-%m-%d %H:%M:%S")
    file_handler = logging.FileHandler(filename=log_file, mode='a')
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(formatter)
    self.logger.addHandler(file_handler)

critical(message)

Logs a critical message.

Parameters:

Name Type Description Default
message str

The log message.

required
Source code in redesign_pipeline/utils/logger_utils.py
 94
 95
 96
 97
 98
 99
100
101
def critical(self, message):
    """
    Logs a critical message.

    Args:
        message (str): The log message.
    """
    self.log('critical', message)

debug(message)

Logs a debug message.

Parameters:

Name Type Description Default
message str

The log message.

required
Source code in redesign_pipeline/utils/logger_utils.py
58
59
60
61
62
63
64
65
def debug(self, message):
    """
    Logs a debug message.

    Args:
        message (str): The log message.
    """
    self.log('debug', message)

error(message)

Logs an error message.

Parameters:

Name Type Description Default
message str

The log message.

required
Source code in redesign_pipeline/utils/logger_utils.py
85
86
87
88
89
90
91
92
def error(self, message):
    """
    Logs an error message.

    Args:
        message (str): The log message.
    """
    self.log('error', message)

info(message)

Logs an info message.

Parameters:

Name Type Description Default
message str

The log message.

required
Source code in redesign_pipeline/utils/logger_utils.py
67
68
69
70
71
72
73
74
def info(self, message):
    """
    Logs an info message.

    Args:
        message (str): The log message.
    """
    self.log('info', message)

log(level, message)

Logs a message with the specified log level.

Parameters:

Name Type Description Default
level str

The log level (e.g., 'debug', 'info', 'warning', 'error', 'critical').

required
message str

The log message.

required
Source code in redesign_pipeline/utils/logger_utils.py
44
45
46
47
48
49
50
51
52
53
54
55
56
def log(self, level, message):
    """
    Logs a message with the specified log level.

    Args:
        level (str): The log level (e.g., 'debug', 'info', 'warning', 'error', 'critical').
        message (str): The log message.
    """
    frame_records = inspect.stack()[2]  # Get the stack frame record before the logger method
    module = inspect.getmodule(frame_records[0])
    function_name = frame_records.function
    message = f'[{self._attempt_id}] - {module.__name__} - {function_name} - {message}'
    getattr(self.logger, level)(message)

set_id(id)

Sets the attempt ID.

Parameters:

Name Type Description Default
id str

The ID of the attempt.

required
Source code in redesign_pipeline/utils/logger_utils.py
35
36
37
38
39
40
41
42
def set_id(self, id):
    """
    Sets the attempt ID.

    Args:
        id (str): The ID of the attempt.
    """
    self._attempt_id = str(id)

warning(message)

Logs a warning message.

Parameters:

Name Type Description Default
message str

The log message.

required
Source code in redesign_pipeline/utils/logger_utils.py
76
77
78
79
80
81
82
83
def warning(self, message):
    """
    Logs a warning message.

    Args:
        message (str): The log message.
    """
    self.log('warning', message)

save_id(id)

Saves an ID with a timestamp to a log file.

Parameters:

Name Type Description Default
id str

The ID to save.

required

Returns:

Name Type Description
str

The saved ID.

Source code in redesign_pipeline/utils/logger_utils.py
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
def save_id(id):
    """
    Saves an ID with a timestamp to a log file.

    Args:
        id (str): The ID to save.

    Returns:
        str: The saved ID.
    """
    timestamp = time.strftime("%Y-%m-%d-%H:%M:%S")
    log_dir = os.path.join(os.getcwd(),'logs')
    os.makedirs(log_dir,exist_ok=True)
    log_file_path = os.path.join(log_dir,'id_log.log')
    with open(log_file_path,'a') as f:
        f.write(f'{timestamp} - {str(id)}')
        f.write('\n')
    return id