-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlog.py
More file actions
53 lines (42 loc) · 1.6 KB
/
log.py
File metadata and controls
53 lines (42 loc) · 1.6 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
import logging
import os
import colorlog # 导入 colorlog 库
# 定义一个函数来返回日志记录的目录名
def get_directory_name(record):
# 从记录中获取文件路径
pathname = record.pathname
# 返回目录名
return os.path.basename(os.path.dirname(pathname))
# 自定义日志格式
log_format = '%(asctime)s - [%(directory_name)s] - %(filename)s [%(levelname)s]: %(message)s'
class DirectoryNameFilter(logging.Filter):
def filter(self, record):
record.directory_name = get_directory_name(record)
return True
def loging(debug=False,path="run.log"):
logger = logging.getLogger(__name__) # 先初始化日志
logger.addFilter(DirectoryNameFilter()) # 添加目录名过滤器
console_handler = logging.StreamHandler()
console_formatter = colorlog.ColoredFormatter(
'%(log_color)s%(asctime)s - [%(directory_name)s] - %(filename)s [%(levelname)s]: %(message)s%(reset)s',
log_colors={
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'bold_red',
'CRITICAL': 'red',
}
)
console_handler.setFormatter(console_formatter)
file_handler = logging.FileHandler(path)
file_formatter = logging.Formatter(log_format)
file_handler.setFormatter(file_formatter)
# 将处理器添加到日志记录器中
logger.addHandler(file_handler)
# 设置日志记录器的最低级别为 DEBUG
logger.setLevel(logging.DEBUG)
if debug:
logger.addHandler(console_handler)
else:
logger.setLevel(logging.INFO)
return logger