Python logging 小记-根记录器特性

  • 前言
    日志是通过名称来关联层级的,比如aaa的日志记录器是会记录所有的 aaa. 开头的日志
    在一点都不相关的脚本里添加日志,只需要名字以 aaa. 开头 就会被记录到aaa的日志记录器

创建根记录器

import logging

class LogHandler(logging.Handler):
    u"""
    日志处理程序
    
    格式化日志并打印
    """
    def __init__(self):
        super(LogHandler, self).__init__()
        self.__formatter = logging.Formatter(
            "%(asctime)s [%(levelname) 8s] %(name)s-> %(message)s"
        )
        
    def emit(self, record):
        message = self.__formatter.format(record)
        print(message)
    pass

root_logger = logging.getLogger("aaa")  # aaa 根记录器
root_logger.propagate = False  # 避免日志消息溢出到其他日志记录器
root_logger.setLevel(logging.DEBUG)
root_logger.addHandler(LogHandler())  # 添加打印
# 添加一行日志
root_logger.info("aaa")

添加到 aaa 根记录器日志

bbb_logger = logging.getLogger("aaa.bbb")
ccc_logger = logging.getLogger("aaa.bbb.ccc")
# 打印查看,此处的日志会被根记录器补货并且运行处理程序
bbb_logger.info("bbb")
ccc_logger.debug("ccc")

添加不是 aaa 根记录器的日志

ddd_logger = logging.getLogger("ddd")
# 打印查看,此处的日志不会被处理
ddd_logger.info("ddd")
ddd_logger.warning("ddd")

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...