zoukankan      html  css  js  c++  java
  • Python--日志模块

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

    # logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
    # logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
    # logging.warning('waring级别,一般用来打印警信息')
    # logging.error('error级别,一般用来打印一些错误信息')
    # logging.critical('critical级别,一般用来打印一些致命的错误信息')
    # 日志级别 debug < info < warning < error < critical
    # logging.basicConfig(level=logging.ERROR,
    # 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')

    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,相当于找一个人给你干活,往屏幕上输出
    # 第一个参数是文件名,第二个参数when是隔多久生成一个日志,backupCount就是保存几个日志文件
    th = handlers.TimedRotatingFileHandler(
    'my.log', when='S', encoding='utf-8', backupCount=5
    ) # 实例化TimedRotatingFileHandler,相当于找一个人给你干活,往文件里面写东西
    st.setFormatter(fmt)
    th.setFormatter(fmt)
    logger.addHandler(st)
    logger.addHandler(th)
    logger.debug('my_log debug信息')
    logger.info('my_log info信息')
    logger.warning('my_log warning信息')
    logger.error('my_log error信息')
    logger.critical('my_log critical信息')

    # param when: 分割日志的单位 S 秒、M 分、 H 小时、 D 天、 W 每星期(interval==0时代表星期一)、midnight 每天凌晨



    封装日志
    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)
    self.logger.setLevel(self.level_relations.get(level)) # 设置日志级别
    format_str = logging.Formatter(fmt)
    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('错误 飞机要爆炸')
  • 相关阅读:
    浅谈Semaphore类
    Python浅谈requests三方库
    191104
    191103
    191102
    191101
    191031
    191030
    191029
    191028
  • 原文地址:https://www.cnblogs.com/wangsilei/p/8572072.html
Copyright © 2011-2022 走看看