• day10-Python学习笔记(二十四)日志模块logging


    # 时间 哪个文件里面的 第几行代码  具体
    import logging
    from logging import handlers

    # debug debug级别,最低级别,一般开发人员用来打印一些调试信息
    # info info级别,正常输出信息,一般用来打印一些正常的操作
    # waring级别,一般用来打印警信息
    # error级别,一般用来打印一些错误信息
    # critical级别,一般用来打印一些致命的错误信息

    # logging.basicConfig(level=logging.DEBUG,
    # format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
    # filename='a.log',
    # filemode='a',
    # )
    # logging.debug('我是debug')
    # logging.info('我是info')
    # logging.warning('我是warning')
    # logging.error('我是error')
    # logging.critical('我是critical')
    #debug < info < warning < error < critical
    Logger = logging.getLogger() #创建一个办公室
    Logger.setLevel(logging.DEBUG) #设置日志级别
    #一个往屏幕上输出 StreamHandler
    #一个往文件里面写东西 TimedRotatingFileHandler
    fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    #定义格式
    st = logging.StreamHandler() #实例化StreamHandler,相当于找一个人给你干活 往屏幕上输出
    st.setFormatter(fmt) #设置屏幕上显示的格式
    th = handlers.TimedRotatingFileHandler(
    'my.log',when='d',encoding='utf-8',backupCount=5
    #第一个参数是文件名,第二个 when是隔多久生成一个日志,backupCount就是保存几个日志文件
    ) #实例化TimedRotatingFileHandler 相当于找一个人给你干活 往文件里面写东西
    th.setFormatter(fmt)#设置文件里面写入的格式
    Logger.addHandler(st) #把这两个对象加入到logger里面,也就是把干活的人塞到办公室里面
    Logger.addHandler(th)
    Logger.debug('my_log debug 信息')
    Logger.info('my_log info 信息')
    Logger.warning('my_log warning 信息')
    Logger.error('my_log error 信息')



    MyLog (封装:打印日志通用类)
    import logging
    from logging import handlers

    class Logger(object):
    level_relations = {
    'debug': logging.DEBUG,
    'info': logging.INFO,
    'warning': logging.WARNING,
    'error': logging.ERROR,
    'crit': logging.CRITICAL
    } # 日志级别关系映射
    def __init__(self,filename,level='info',
    when='D',
    back_count=3,
    fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
    self.logger = logging.getLogger(filename)
    # 分割日志的单位 S 秒、M 分、 H 小时、 D 天、 W 每星期(interval==0时代表星期一)、midnight 每天凌晨

    format_str = logging.Formatter(fmt) #设置日志格式
    self.logger.setLevel(self.level_relations.get(level)) #设置日志级别
    sh = logging.StreamHandler()
    sh.setFormatter(format_str)
    th = handlers.TimedRotatingFileHandler(filename=filename,when=when,
    backupCount=back_count,encoding='utf-8')
    th.setFormatter(format_str)
    self.logger.addHandler(sh)
    self.logger.addHandler(th)

    if __name__ == '__main__':
    log = Logger('nhy.log')
    log.logger.debug('i的是100')
    log.logger.info('开机')
    log.logger.warning('警告 飞机没油了')
    log.logger.error('错误 飞机要爆炸')


    run (test.py)
    from MyLog import Logger

    log = Logger('nhy.log')
    log.logger.debug('i的是100')
    log.logger.info('开机')
    log.logger.warning('警告 飞机没油了')
    log.logger.error('错误 飞机要爆炸')



  • 相关阅读:
    [CERC2016]机棚障碍 Hangar Hurdles(kruskal重构树+树上倍增)
    jzoj4313 电话线铺设(最小生成树+最近公共祖先)
    POJ3233 Matrix Power Series(快速幂求等比矩阵和)
    【模版】分治法求平面最近点对
    [HNOI2009]最小圈 (二分答案+负环)
    [USACO]地震 (二分答案+最优比率生成树详解)
    BZOJ:1816 [Cqoi2010]扑克牌 (贪心或二分答案)
    bzoj 4184: shallot (线段树维护线性基)
    一维点距的中位数 (分治)
    [BJWC2011]最小三角形(分治+最近点对)
  • 原文地址:https://www.cnblogs.com/flynn0825/p/8563183.html
Copyright © 2020-2023  润新知