zoukankan      html  css  js  c++  java
  • python学习笔记-day10-3【日志模块logging】

    今天讲讲日志模块logging如何使用。

    一、第一种用法,直接往控制台输出

    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级别,一般用来打印一些错误信息')

    二,第二种往文件里写,同时往控制台输出

    #1、办公室
    #2、负责往控制台里面输出日志信息的
    #3、往日志文件里面写日志的,按天生成日志,清理日志
    
    
    from logging import handlers
    logger = logging.getLogger() #先实例化一个Log对象,先创建一个办公室
    logger.setLevel(logging.DEBUG)
    # fl = logging.FileHandler(filename='a.log', mode='a',encoding='utf-8') #找到写日志文件的这个人,这个用户没有一面的b1的方法好,尽量不要用
    c1 = logging.StreamHandler() #负责往控制台输出的
    bl = handlers.TimedRotatingFileHandler(filename='a.log', when='S',interval=1,backupCount=5,encoding='utf-8') #往文件里写
    fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    
    c1.setFormatter(fmt) #设置控制台输出的日志格式
    bl.setFormatter(fmt) #设置文件里面的写入的日志格式
    
    logger.addHandler(c1) #把已经调较好的人放到办公室里
    logger.addHandler(bl)
    
    #指定日志的格式
    logger.debug('我是debug。。。')
    logger.warning('我是waring...')
    
    #1、先看看,是不是控制台也用了,文件里面也有了,中文也不是乱码了
    #2、每秒运行一次,看看是不是每秒都会产生一个文件
    #3、再看看是不是帮你备份3个

    三、封装Logging类

    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)
    
    mylog = MyLogger('my.log','debug') #实例化,调用
    mylog.logger.warning('哈哈哈')
    总是想多努力一点的人
  • 相关阅读:
    php ajax请求和返回
    关于 58 996 浪潮 奋进者计划 华为 奋斗者协议—— 小论!
    简单的行为控制管理方法,自动登录,session定时验证码过期
    mysql performance_schema 和information_schema.tables了解
    视频直播点播nginx-rtmp开发手册中文版
    PHPExcel中文开发手册翻译版(2)
    vm安装centos 老是出现 grub.conf 配置问题
    PHPExcel中文开发手册翻译版(1)
    微信支付 扫码支付 模式二 完整版和测试代码+后台对账
    PHP写在线视频直播技术详解
  • 原文地址:https://www.cnblogs.com/shmily2018/p/9094709.html
Copyright © 2011-2022 走看看