forked from ProjectBorealis/PBSync
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpblog.py
99 lines (73 loc) · 2.11 KB
/
pblog.py
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
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
import logging
import os.path
import sys
import coloredlogs
import verboselogs
from pbpy import pbtools
max_log_size = 5 * 1000 * 1000
root_log = None
def setup_logger(log_file_path):
# If log file is big enough, remove it
if os.path.isfile(log_file_path) and os.path.getsize(log_file_path) >= max_log_size:
pbtools.remove_file(log_file_path)
# Prepare logger
verboselogs.install()
# Formatting
format_string = "%(asctime)s [%(levelname)-5.5s] %(message)s"
date_format = "%d-%b-%y %H:%M:%S"
log_formatter = logging.Formatter(format_string, datefmt=date_format)
global root_log
root_log = logging.getLogger()
# File handler
file_handler = logging.FileHandler(log_file_path)
file_handler.setFormatter(log_formatter)
root_log.addHandler(file_handler)
# Log level
log_level = logging.INFO
root_log.setLevel(log_level)
# Colored logs
coloredlogs.DEFAULT_LEVEL_STYLES = {
**coloredlogs.DEFAULT_LEVEL_STYLES,
"trace": {"color": 246},
"critical": {"background": "red"},
"debug": coloredlogs.DEFAULT_LEVEL_STYLES["info"],
}
coloredlogs.DEFAULT_LOG_FORMAT = format_string
coloredlogs.DEFAULT_LOG_LEVEL = log_level
coloredlogs.DEFAULT_DATE_FORMAT = date_format
coloredlogs.install(logger=root_log, stream=sys.stdout)
def critical(msg):
if root_log is None:
logging.critical(msg)
return
root_log.critical(msg)
def error(msg):
if root_log is None:
logging.error(msg)
return
root_log.error(msg)
def exception(msg):
if root_log is None:
logging.exception(msg)
return
root_log.exception(msg)
def success(msg):
if root_log is None:
logging.info(msg)
return
root_log.log(verboselogs.SUCCESS, msg)
def warning(msg):
if root_log is None:
logging.warning(msg)
return
root_log.warning(msg)
def info(msg):
if root_log is None:
logging.info(msg)
return
root_log.info(msg)
def debug(msg):
if root_log is None:
logging.debug(msg)
return
root_log.debug(msg)