# 06.Python 日志模块
日志模块大家应该都很熟悉。普通测试功能,可能直接print函数就能满足需要。但是方便项目排查,一般都需要集成类似log4j等日志框架,方便输出日志到控制台、文件等不同的媒介。
下边就是一个简单的例子,示范如何在Python程序中打印日志到控制台和文件。
详细参数可以参考官方文档Logging Cookbook (opens new window)
- 示例
主模块
import logging.config
import os
import yaml
import util
def setup_logging(log_config="logging.yaml", default_level=logging.INFO):
if os.path.exists(log_config):
with open(log_config, "r", encoding="utf8") as f:
config = yaml.safe_load(f)
logging.config.dictConfig(config)
else:
logging.basicConfig(level=default_level)
def read_json_file(file_path):
logging.info("{}\t{}\t{}".format("#ID", "是否命中缓存", "首帧(ms)", "合成文本"))
util.uuid()
# main
setup_logging(log_config="logging.yaml")
read_json_file(None)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
依赖模块
import logging.config
def uuid():
logging.info("generate uuid")
1
2
3
4
5
2
3
4
5
配置文件
version: 1
disable_existing_loggers: False
formatters:
simple:
format: "%(asctime)s [%(threadName)s] [%(levelname)s] %(module)s(%(lineno)d) - %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: simple
filename: info.log
maxBytes: 10485760
backupCount: 10
encoding: utf8
root:
level: INFO
handlers: [ console,file_handler ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Apache License 2.0 | Copyright © 2022 by xueliang.wu 苏ICP备15016087号