Skip to content

Commit 8ac2bf2

Browse files
authored
Merge pull request #1 from clagiordano/feature/log-levels
Log levels enum
2 parents 3be6f00 + bc26785 commit 8ac2bf2

7 files changed

Lines changed: 64 additions & 29 deletions

File tree

clagiordano/python3_logger/AbstractLogger.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,49 @@ class AbstractLogger(ABC):
66
and their mandatory methods
77
"""
88
@abstractmethod
9-
def emergency(self, message):
9+
def emergency(self, message) -> None:
1010
"""
1111
It logs an emergency message
1212
"""
1313

1414
@abstractmethod
15-
def alert(self, message):
15+
def alert(self, message) -> None:
1616
"""
1717
It logs an alert message
1818
"""
1919

2020
@abstractmethod
21-
def critical(self, message):
21+
def critical(self, message) -> None:
2222
"""
2323
It logs a critical message
2424
"""
2525

2626
@abstractmethod
27-
def error(self, message):
27+
def error(self, message) -> None:
2828
"""
2929
It logs an error message
3030
"""
3131

3232
@abstractmethod
33-
def warning(self, message):
33+
def warning(self, message) -> None:
3434
"""
3535
It logs a warning message
3636
"""
3737

3838
@abstractmethod
39-
def notice(self, message):
39+
def notice(self, message) -> None:
4040
"""
4141
It logs a notice message
4242
"""
4343

4444
@abstractmethod
45-
def info(self, message):
45+
def info(self, message) -> None:
4646
"""
4747
It logs an info message
4848
"""
4949

5050
@abstractmethod
51-
def debug(self, message):
51+
def debug(self, message) -> None:
5252
"""
5353
It logs a debug message
5454
"""

clagiordano/python3_logger/CLILogger.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,60 @@
11
import re
22
from clagiordano.python3_logger.AbstractLogger import AbstractLogger
3+
from clagiordano.python3_logger.LogLevels import LogLevels
34

45
class CLILogger(AbstractLogger):
56
"""
67
Command Line logger with optional colors
78
"""
89
__ansi = True
9-
__EMERGENCY = '\033[1;41mEMERGENCY\033[0m'
10-
__ALERT = '\033[41mALERT\033[0m'
11-
__CRITICAL = '\033[1;31mCRITICAL\033[0m'
12-
__ERROR = '\033[31mERROR\033[0m'
13-
__WARNING = '\033[1;33mWARNING\033[0m'
14-
__NOTICE = '\033[33mNOTICE\033[0m'
15-
__INFO = '\033[1;32mINFO\033[0m'
16-
__DEBUG = '\033[1;30mDEBUG\033[0m'
10+
__EMERGENCY = f'\033[1;41m{LogLevels.EMERGENCY.name:>10}\033[0m'
11+
__ALERT = f'\033[41m{LogLevels.ALERT.name:>10}\033[0m'
12+
__CRITICAL = f'\033[1;31m{LogLevels.CRITICAL.name:>10}\033[0m'
13+
__ERROR = f'\033[31m{LogLevels.ERROR.name:>10}\033[0m'
14+
__WARNING = f'\033[1;33m{LogLevels.WARNING.name:>10}\033[0m'
15+
__NOTICE = f'\033[33m{LogLevels.NOTICE.name:>10}\033[0m'
16+
__INFO = f'\033[1;32m{LogLevels.INFO.name:>10}\033[0m'
17+
__DEBUG = f'\033[1;30m{LogLevels.DEBUG.name:>10}\033[0m'
1718

18-
def __format(self, badge, message):
19+
def __format(self, badge, message) -> str:
20+
"""
21+
Formats and returns an output string
22+
"""
1923
output = f"[{badge}]: {message}"
20-
2124
if self.__ansi is False:
2225
ansi_escape = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])')
2326
output = ansi_escape.sub('', output)
2427

2528
return output
2629

27-
def set_ansi(self, value):
30+
def set_ansi(self, value) -> None:
2831
"""
2932
Enable or disable ANSI color usage, possible values True or False
3033
"""
3134
self.__ansi = bool(value)
3235

33-
def emergency(self, message):
36+
def emergency(self, message) -> None:
3437
"""
3538
It outputs an emergency message and exits
3639
"""
3740
print(self.__format(self.__EMERGENCY, message))
3841
raise SystemExit(8)
3942

40-
def alert(self, message):
43+
def alert(self, message) -> None:
4144
"""
4245
It outputs an alert message and exits
4346
"""
4447
print(self.__format(self.__ALERT, message))
4548
raise SystemExit(7)
4649

47-
def critical(self, message):
50+
def critical(self, message) -> None:
4851
"""
4952
It outputs a critical message and exits
5053
"""
5154
print(self.__format(self.__CRITICAL, message))
5255
raise SystemExit(6)
5356

54-
def error(self, message):
57+
def error(self, message) -> None:
5558
"""
5659
It outputs an error message
5760
"""
@@ -63,19 +66,19 @@ def warning(self, message):
6366
"""
6467
print(self.__format(self.__WARNING, message))
6568

66-
def notice(self, message):
69+
def notice(self, message) -> None:
6770
"""
6871
It outputs a notice message
6972
"""
7073
print(self.__format(self.__NOTICE, message))
7174

72-
def info(self, message):
75+
def info(self, message) -> None:
7376
"""
7477
It outputs a info message
7578
"""
7679
print(self.__format(self.__INFO, message))
7780

78-
def debug(self, message):
81+
def debug(self, message) -> None:
7982
"""
8083
It outputs a debug message
8184
"""
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from enum import Enum
2+
3+
class LogLevels(Enum):
4+
"""
5+
Log levels definition
6+
"""
7+
EMERGENCY = 0
8+
ALERT = 1
9+
CRITICAL = 2
10+
ERROR = 3
11+
WARNING = 4
12+
NOTICE = 5
13+
INFO = 6
14+
DEBUG = 7
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.1.0'
1+
__version__ = '1.1.0'

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "clagiordano.python3-logger"
3-
version = "1.0.2"
3+
version = "1.1.0"
44
description = "Library for logging facility"
55
authors = ["Claudio Giordano <claudio.giordano@autistici.org>"]
66
license = "LGPL-3.0-or-later"

tests/test_CLILogger.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def test_version(self):
1212
"""
1313
version
1414
"""
15-
assert __version__ == '0.1.0'
15+
assert __version__ == '1.1.0'
1616

1717
def test_ansi_emergency(self):
1818
"""

tests/test_LogLevels.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import pytest
2+
from clagiordano.python3_logger.LogLevels import LogLevels
3+
4+
@pytest.mark.parametrize("level,expected_value", [
5+
('EMERGENCY', 0),
6+
('ALERT', 1),
7+
('CRITICAL', 2),
8+
('ERROR', 3),
9+
('WARNING', 4),
10+
('NOTICE', 5),
11+
('INFO', 6),
12+
('DEBUG', 7)
13+
])
14+
def test_log_levels(level, expected_value):
15+
"""
16+
Tests log levels
17+
"""
18+
assert LogLevels[level].value == expected_value

0 commit comments

Comments
 (0)