# 06.Python 日志模块

日志模块大家应该都很熟悉。普通测试功能,可能直接print函数就能满足需要。但是方便项目排查,一般都需要集成类似log4j等日志框架,方便输出日志到控制台、文件等不同的媒介。

下边就是一个简单的例子,示范如何在Python程序中打印日志到控制台和文件。

详细参数可以参考官方文档Logging Cookbook (opens new window)

  1. 示例

主模块

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

依赖模块

import logging.config

def uuid():
    logging.info("generate uuid")

1
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
Last Updated: 11/30/2023, 3:35:27 PM
Apache License 2.0 | Copyright © 2022 by xueliang.wu 苏ICP备15016087号