python 日志打印2

import  logging
from  logging.handlers import TimedRotatingFileHandler

class Logger(object):
    def __init__(self):
        # 创建logger对象
        self.logger=logging.getLogger()#logging.getLogger(name)函数中的name是日志记录的用例名,不指定name会返回root对象
        self.logger.setLevel(logging.DEBUG)
        # logging.root.setLevel(logging.NOTSET) #NOTSET会显示所有输出
        self.log_file_name="E:/PyCharmWorkSpace/AutoInterfaceTest/log/testlog.log"
        self.backup_count=5
        self.console_output_level="INFO"
        self.file_output_level="DEBUG"
        self.formatter=logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")
    def get_logger(self):
        #handler对象:日志对象用于输出日志,而Handler对象用于指定日志向哪里输出(文件、终端等等)
        # 常用handler对象:
        # 1.StreamHandler, 用于向标准输入输出流等输出日志  2.FileHandler,用于向文件输出日志
        # 3.NullHandler,什么也不输出 4.RotatingFileHandler,向文件输出日志,如果文件到达指定大小,创建新文件并继续输出日志。

        # 控制台日志
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(self.formatter)
        console_handler.setLevel(self.console_output_level)
        self.logger.addHandler(console_handler)  #将控制台日志对象添加到logger
        # 文件日志
        # 每天重新创建一个日志文件,最多保留backup_count份
        file_handler = TimedRotatingFileHandler(filename=self.log_file_name,
                                                when='D',
                                                interval=1,
                                                backupCount=self.backup_count,
                                                delay=True,
                                                encoding='utf-8')
        file_handler.setFormatter(self.formatter)
        file_handler.setLevel(self.file_output_level)
        self.logger.addHandler(file_handler)#将文件日志对象添加到logger
        return self.logger
if __name__ == '__main__':
    log=Logger().get_logger()
    # 打印优先级:critical>error>warning>info>debug
    # 当等级为debug时,全部等级都能够打印出来,等级为info时,除了debug,其他都能够打印
    log.debug("debug信息,最低级别,一般开发人员用来打印一些调试信息")
    log.info("info信息,正常输出信息,一般用来打印一些正常的操作")
    log.warning("warning,一般用来打印警信息,默认等级为warning")
    log.error("error信息,一般用来打印一些错误信息")
    log.critical("critical信息,一般用来打印一些致命的错误信息,等级最高")

logger=Logger().get_logger()

 

posted @ 2020-05-21 17:00  少年年少Y  阅读(311)  评论(0编辑  收藏  举报