跳至内容
日志处理器

日志处理器

先在项目里装个“行车记录仪”,方便后续故障排查。

common/log_handler.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
import logging
from logging.handlers import RotatingFileHandler
import os


def setup_logger(name: str = __name__, level: int = logging.DEBUG) -> logging.Logger:
    """
    配置并返回一个logger实例
    :param name: logger名称,建议使用模块名(__name__)
    :param level: 日志级别,默认INFO
    :return: 配置好的logger
    """
    if not os.path.exists("logs"):
        os.makedirs("logs")
    log_format = "%(asctime)s - %(levelname)s - %(filename)s:%(funcName)s:%(lineno)d - %(message)s"
    date_format = "%Y-%m-%d %H:%M:%S"
    logger = logging.getLogger(name)
    logger.setLevel(level)
    file_fromatter = logging.Formatter(log_format,date_format)
    
    file_handler_for_all = RotatingFileHandler(
        "logs/all.log", maxBytes=10*1024*1024, backupCount=5, encoding="utf-8"
    )
    file_handler_for_all.setLevel(level)
    file_handler_for_all.setFormatter(file_fromatter)
    logger.addHandler(file_handler_for_all)
    
    file_handler_for_error = RotatingFileHandler(
        "logs/error.log", maxBytes=10*1024*1024, backupCount=5, encoding="utf-8"
    )
    file_handler_for_error.setLevel(logging.ERROR)
    file_handler_for_error.setFormatter(file_fromatter)
    logger.addHandler(file_handler_for_error)
    
    return logger
    

if __name__=="__main__":
    logger = setup_logger()
    logger.debug("测试")
    logger.info("测试")
    logger.warning("测试")
    logger.error("测试")
    logger.critical("测试")

参考:

最后更新于