|
1 | 1 | import logging
|
| 2 | +import dataclasses |
2 | 3 | from logging.handlers import TimedRotatingFileHandler, RotatingFileHandler
|
3 | 4 | from workflow.common import BaseEnum
|
4 | 5 |
|
5 |
| -log_filename = 'rwm.log' |
6 |
| - |
7 | 6 |
|
8 | 7 | class LogRotationOption(str, BaseEnum):
|
9 | 8 | DATE = 'date'
|
10 | 9 | SIZE = 'size'
|
11 | 10 |
|
12 | 11 |
|
13 |
| -def configure(level=logging.INFO, rotation: LogRotationOption = LogRotationOption.DATE, |
14 |
| - log_file_size: int = 5) -> logging.Logger: |
| 12 | +@dataclasses.dataclass |
| 13 | +class LogConfiguration: |
| 14 | + level: int = logging.INFO |
| 15 | + rotation: LogRotationOption = LogRotationOption.DATE |
| 16 | + log_file_size: int = 5 |
| 17 | + log_file_name: str = "rwm" |
| 18 | + |
| 19 | + |
| 20 | +def configure(config: LogConfiguration) -> logging.Logger: |
15 | 21 | # override default logging level for azure
|
16 | 22 | logger = logging.getLogger('azure.core')
|
17 | 23 | logger.setLevel(logging.ERROR)
|
18 | 24 | logger = logging.getLogger('snowflake')
|
19 | 25 | logger.setLevel(logging.ERROR)
|
20 | 26 |
|
21 | 27 | logger = logging.getLogger()
|
22 |
| - logger.setLevel(level) |
| 28 | + logger.setLevel(config.level) |
23 | 29 | formatter = logging.Formatter('[%(asctime)s.%(msecs)03d][%(levelname)s][%(name)s] %(message)s', '%Y-%m-%d %H:%M:%S')
|
24 | 30 |
|
25 | 31 | stream_handler = logging.StreamHandler()
|
26 | 32 | stream_handler.setFormatter(formatter)
|
27 | 33 | logger.addHandler(stream_handler)
|
28 | 34 |
|
29 |
| - if rotation == LogRotationOption.SIZE: |
30 |
| - max_log_size = log_file_size * 1024 * 1024 # covert to Mb |
31 |
| - size_rotation_handler = RotatingFileHandler(log_filename, maxBytes=max_log_size, backupCount=30, |
| 35 | + full_log_file_name = f"{config.log_file_name}.log" |
| 36 | + |
| 37 | + if config.rotation == LogRotationOption.SIZE: |
| 38 | + max_log_size = config.log_file_size * 1024 * 1024 # covert to Mb |
| 39 | + size_rotation_handler = RotatingFileHandler(full_log_file_name, maxBytes=max_log_size, backupCount=30, |
32 | 40 | encoding='utf-8')
|
33 | 41 | size_rotation_handler.setFormatter(formatter)
|
34 | 42 | logger.addHandler(size_rotation_handler)
|
35 | 43 | logger.info("Log rotation by size is enabled")
|
36 |
| - elif rotation == LogRotationOption.DATE: |
37 |
| - time_rotation_handler = TimedRotatingFileHandler(log_filename, when='midnight', interval=1, backupCount=30, |
38 |
| - encoding='utf-8') |
| 44 | + elif config.rotation == LogRotationOption.DATE: |
| 45 | + time_rotation_handler = TimedRotatingFileHandler(full_log_file_name, when='midnight', interval=1, |
| 46 | + backupCount=30, encoding='utf-8') |
39 | 47 | time_rotation_handler.setFormatter(formatter)
|
40 | 48 | logger.addHandler(time_rotation_handler)
|
41 | 49 | logger.info("Log rotation by date is enabled")
|
|
0 commit comments