zoukankan      html  css  js  c++  java
  • Python学习(三十三)日志模块

    1、日志级别及格式

    import logging
    logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
                        filename='my.log',
                        filemode='a',#写日志模式,覆盖之前的还是追加,w清空以前的日志,重新写入,a追加,保留以前的
                        format=
                        '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                        #日志格式
                        )
    logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
    logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
    logging.warning('waring级别,一般用来打印警信息')
    logging.error('error级别,一般用来打印一些错误信息')

    日志的级别分为四级:DEBUG/INFO/WARNING/ERROR

    写日志时,可以采用w模式,也可以采用a模式,区别在于前者写入时会清空之前的日志,后者保留之前的,只是追加新的

    日志的格式是固定格式,在写代码的时候直接沿用就可以

    2、写入日志

    import logging
    from logging import handlers
    logger=logging.getLogger() #先实例化一个logger对象,先创建一个办公室
    logger.setLevel(logging.DEBUG) #设置日志级别
    bl=handlers.TimedRotatingFileHandler(filename='a.log',when='m',interval=1,backupCount=3,encoding='utf-8')
    #写日志文件,最多备份三个文件,再多,之前的文件就删除了
    #when 时间 S秒 m 分钟,每秒/分钟生成一个文件
    #interval 间隔时间
    #backupCount  保留的文件个数
    fmt=logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    #指定日志的格式
    bl.setFormatter(fmt)  #设置文件里面写入的日志格式
    logger.addHandler(bl)   #加入办公室
    logger.debug('我是debug')  #debug日志级别显示内容
    logger.warning('我是warning')  #warning日志级别显示内容

     使用日志要先实例化一个对象,设置日志的级别,日志的输出格式,以及写入的日志名称及方式(写或追加)。

     可以设置文件备份的个数及生成文件的间隔时间。

    3、封装写日志的类

    import logging
    from logging import handlers
    class MyLogger():
        def __init__(self,file_name,level='info',backCount=5,when='D'):
            logger = logging.getLogger()  # 先实例化一个logger对象,先创建一个办公室
            logger.setLevel(self.get_level(level))  # 设置日志的级别的人
            cl = logging.StreamHandler()  # 负责往控制台输出的人
            bl = handlers.TimedRotatingFileHandler(filename=file_name, when=when, interval=1, backupCount=backCount, encoding='utf-8')
            fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
            cl.setFormatter(fmt)  # 设置控制台输出的日志格式
            bl.setFormatter(fmt)  # 设置文件里面写入的日志格式
            logger.addHandler(cl)
            logger.addHandler(bl)
            self.logger = logger
    
        def get_level(self,str):
            level = {
                'debug':logging.DEBUG,
                'info':logging.INFO,
                'warn':logging.WARNING,
                'error':logging.ERROR
            }
            str = str.lower()
            return level.get(str)
    
    lw_log = MyLogger('lw.log','debug')
    lw_log.logger.warning('哈哈哈')
  • 相关阅读:
    函数方法与面向对象
    seleniums私房菜系列一 ---- selenium简介
    MySQL图形化管理工具
    存储引擎
    mysql自定义函数
    加密函数
    mysql聚合函数
    mysql信息函数
    mysql日期时间函数(常用的)
    mysql比较运算符和函数
  • 原文地址:https://www.cnblogs.com/emilyliu/p/9112543.html
Copyright © 2011-2022 走看看