-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathloggers.py
More file actions
68 lines (46 loc) · 2.3 KB
/
loggers.py
File metadata and controls
68 lines (46 loc) · 2.3 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from enum import StrEnum
from datetime import datetime
from src.logger.color_text import makeRed, makeYellow, makeBlue, makeCyan, makePink, makeGreen
class LEVEL(StrEnum):
ERROR = "error"
WARNING = "warning"
INFO = "info"
DEBUG = "debug"
CRITICAL = "critical"
SUCCESS = "success"
def name(self):
return self.value.upper()
def log(message: str, level: LEVEL, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
now = time or datetime.now()
logmessage = f"[{now.strftime('%Y-%m-%d %H:%M:%S')}] [{level.name()}] {message}"
if not silent:
match level:
case LEVEL.ERROR:
print(makeRed(logmessage))
case LEVEL.WARNING:
print(makeYellow(logmessage))
case LEVEL.INFO:
print(makeBlue(logmessage))
case LEVEL.DEBUG:
print(makeCyan(logmessage))
case LEVEL.CRITICAL:
print(makePink(logmessage))
case LEVEL.SUCCESS:
print(makeGreen(logmessage))
case _:
raise NotImplemented(f"Level {level} not implemented")
if write:
with open("log.txt", "a") as f:
f.write(logmessage + "\n")
def log_error(message: str, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
log(message, LEVEL.ERROR, time=time, silent=silent, write=write)
def log_warning(message: str, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
log(message, LEVEL.WARNING, time=time, silent=silent, write=write)
def log_info(message: str, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
log(message, LEVEL.INFO, time=time, silent=silent, write=write)
def log_debug(message: str, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
log(message, LEVEL.DEBUG, time=time, silent=silent, write=write)
def log_critical(message: str, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
log(message, LEVEL.CRITICAL, time=time, silent=silent, write=write)
def log_success(message: str, *, time:datetime|None = None, silent:bool = False, write:bool = True) -> None:
log(message, LEVEL.SUCCESS, time=time, silent=silent, write=write)