zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    部署方法
    MIME
    设置下载文件位置
    访问端口
    什么是Linq表达式?什么是Lambda表达式?
    彻底理解js中this的指向,不必硬背。
    获取checkbox状态
    checkbox复选框,如何让其勾选时触发一个事件,取消勾选时不触发
    leetcode — reverse-nodes-in-k-group
    leetcode — swap-nodes-in-pairs
  • 原文地址:https://www.cnblogs.com/yangjr/p/12931888.html
Copyright © 2011-2022 走看看