zoukankan      html  css  js  c++  java
  • python中的日志,logger用法

    python中自带logger模块,实现方法有两种,一般使用第二种,更灵活

    方法一:

    import logging

    #
    通过logging.basicConfig完成 logging.basicConfig( level=logging.DEBUG, # 显示级别 filename='logger.log', # 放入的文件目录,如果没有会显示在屏幕上 filemode='w', # 采用模式,写入 format='%(asctime)s %(filename)s [%(lineno)d] %(message)s', # 显示时间格式, 文件名,行号, 错误信息 ) logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')

    方法二:

    # 通过logger来完成
    import logging
    def logger(): logger = logging.getLogger() fh = logging.FileHandler('test.log') # 可以向文件发送日志 ch = logging.StreamHandler() # 可以向屏幕发送日志 fm = logging.Formatter('%(asctime)s %(message)s') # 打印格式 fh.setFormatter(fm) ch.setFormatter(fm) logger.addHandler(fh) logger.addHandler(ch) logger.setLevel('DEBUG') # 设置级别 # logger.info('info') # logger.debug('debug') # logger.warning('warning') # logger.error('error') # logger.critical('critical') return logger logger = logger() logger.info('info')

    logger的踩坑

    import logging
    
    logger = logging.getLogger()  # 不写名字指的是根用户, 没有设置等级,默认warning
    logger1 = logging.getLogger('mylogger')  # 创建一个子用户
    logger2 = logging.getLogger('mylogger')
    
    logger1.setLevel(logging.DEBUG)
    logger2.setLevel(logging.INFO)
    
    fh = logging.FileHandler('test2.log')  # 可以向文件发送日志
    ch = logging.StreamHandler()  # 可以向屏幕发送日志
    
    logger.addHandler(ch)
    logger.addHandler(fh)
    
    logger.debug('logger debug message')
    logger.info('logger info message')
    logger.warning('logger warning message')
    logger.error('logger error message')
    logger.critical('logger critical message')
    
    
    logger1.addHandler(fh)
    logger1.addHandler(ch)
    logger2.addHandler(fh)
    logger2.addHandler(ch)
    
    
    logger1.debug('logger1 debug message')
    logger1.info('logger1 info message')
    logger1.warning('logger1 warning message')
    logger1.error('logger1 error message')
    logger1.critical('logger1 critical message')
    
    # logger2.debug('logger2 debug message')
    # logger2.info('logger2 info message')
    # logger2.warning('logger2 warning message')
    # logger2.error('logger2 error message')
    # logger2.critical('logger2 critical message')
    
    # logger1和logger2实际是一个对象
    
    
    logger.debug('logger debug message')
    logger.info('logger info message')
    logger.warning('logger warning message')
    logger.error('logger error message')
    logger.critical('logger critical message')
    
    
    # logger1执行的时候,会查看父级有没有输出,如果有输出,logger1会再输出一遍,解决方法是不让父级输出
  • 相关阅读:
    实时控制软件设计第一周作业-汽车ABS软件系统案例分析
    团队项目·冰球模拟器——任务间通信、数据共享等设计
    团队项目·冰球模拟器——cmake 自动化构建系统的配置文件的编写
    团队项目·冰球模拟器——文件结构设计
    团队项目·冰球模拟器——插值算法接口设计
    第四周作业
    第三周作业、实时操作系统µC/OS介绍及其它内容
    第二周作业、停车场门禁控制系统状态机
    Open Dynamics Engine for Linux 安装笔记
    第一周作业、典型实时控制系统案例分析
  • 原文地址:https://www.cnblogs.com/majianyu/p/10091812.html
Copyright © 2011-2022 走看看