Skip to content

Commit 6320ab7

Browse files
committed
Merge branch 'feature/logging' into develop
2 parents 35ad583 + 6b37e21 commit 6320ab7

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

python-algorithm/algorithm/utils/__init__.py

Whitespace-only changes.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import logging
2+
from typing import Union
3+
4+
5+
def get_console_logger(name: str, level: Union[int, str, None] = None) -> logging.Logger:
6+
"""
7+
Get a console logger with the specified name and log level.
8+
:param name: logger name
9+
:param level: log level which can be an integer, string, or None
10+
:return: console logger
11+
"""
12+
if level is None:
13+
level = logging.INFO
14+
elif isinstance(level, str):
15+
level = _str_to_log_level(level)
16+
elif not isinstance(level, int):
17+
raise TypeError(f'Invalid log level type: {type(level)}')
18+
19+
return _create_console_logger(name, level)
20+
21+
22+
def _str_to_log_level(level: str) -> int:
23+
"""
24+
Convert a string log level to an integer log level.
25+
:param level: string log level
26+
:return: integer log level
27+
"""
28+
level = level.upper()
29+
log_levels = {
30+
'NOTSET': logging.NOTSET,
31+
'DEBUG': logging.DEBUG,
32+
'INFO': logging.INFO,
33+
'WARNING': logging.WARNING,
34+
'WARN': logging.WARNING,
35+
'ERROR': logging.ERROR,
36+
'CRITICAL': logging.CRITICAL,
37+
'FATAL': logging.CRITICAL
38+
}
39+
40+
if level in log_levels:
41+
return log_levels[level]
42+
else:
43+
raise ValueError(f'Invalid log level: {level}')
44+
45+
46+
def _create_console_logger(name: str, level: int) -> logging.Logger:
47+
"""
48+
Get a console logger with the specified name and log level.
49+
:param name: logger name
50+
:param level: log level
51+
:return: console logger
52+
"""
53+
logger = logging.getLogger(name)
54+
logger.setLevel(level)
55+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
56+
console_handler = logging.StreamHandler()
57+
console_handler.setFormatter(formatter)
58+
logger.addHandler(console_handler)
59+
return logger

0 commit comments

Comments
 (0)