python的log模块

'''

日志模块,可用类/实例调用
例:my_logger = MyLogger.create_logger
    my_logger.info("输出级别为info的日志信息)
'''

import logging
from logging.handlers import TimedRotatingFileHandler
import time


class MyLogger():
    @staticmethod  # 静态方法,使用时可用类/实例调用,只在名义上归类管理
    def create_logger():

        # 获取日志收集器,并设置名称为my_logger(若不设置名字,则为默认日志收集器root)
        my_logger= logging.getLogger("my_logger")
        my_logger.setLevel("DEBUG")  # 收集等级默认为warning

        # 创建一个输出到控制台的处理器
        control_hander = logging.StreamHandler()
        control_hander.setLevel("ERROR")  # 设置输出到控制台的处理器的输出等级为ERROR
        my_logger.addHandler(control_hander)  # 添加处理器并绑定在日志收集器上   ,addHandler:增加处理器, removeHandler:删除处理器

        # 创建一个处理器,使用时间滚动的文件处理器
        filename = '../Log/'+'mylog'+time.strftime("%Y%m%d")+".txt"
        file_handler = TimedRotatingFileHandler(filename=filename, when='D',interval=1, encoding='utf-8')
        file_handler.setLevel("DEBUG")  # 设置输出到文件的处理器的输出等级为DEBUG
        my_logger.addHandler(file_handler)

        # 设置输出到文件与控制台的格式
        formatter = logging.Formatter('%(asctime)s  [%(filename)s-->line:%(lineno)d],%(levelname)s: %(message)s')
        file_handler.setFormatter(formatter)
        control_hander.setFormatter(formatter)
        return my_logger


# a = 100
# # assert a==0
# #my= MyLogger() #可创建实例调用
# my_logger = MyLogger.create_logger() # 可直接采用类调用
# my_logger.debug(a)
# my_logger.info("info")
# my_logger.warning("warn")
# my_logger.error("error")
# my_logger.critical("critical")

相关log模块学习链接: https://www.cnblogs.com/miki-peng/p/13416944.html

原文地址:https://www.cnblogs.com/byy521/p/15036290.html