• python logging 总结


    基本用法:
     
    import sys
     
    # 获取logger实例,如果参数为空则返回root logger
    logger = logging.getLogger("AppName")
     
    # 指定logger输出格式
    formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
     
    # 文件日志
    file_handler = logging.FileHandler("test.log")
    file_handler.setFormatter(formatter)  # 可以通过setFormatter指定输出格式
     
    # 控制台日志
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.formatter = formatter  # 也可以直接给formatter赋值
     
    # 为logger添加的日志处理器
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
     
    # 指定日志的最低输出级别,默认为WARN级别
    logger.setLevel(logging.INFO)
     
    # 输出不同级别的log
    logger.debug('this is debug info')
    logger.info('this is information')
    logger.warn('this is warning message')
    logger.error('this is error message')
    logger.fatal('this is fatal message, it is same as logger.critical')
    logger.critical('this is critical message')
     
    # 2018-04-08 21:59:19,493 INFO    : this is information
    # 2018-04-08 21:59:19,493 WARNING : this is warning message
    # 2018-04-08 21:59:19,493 ERROR   : this is error message
    # 2018-04-08 21:59:19,493 CRITICAL: this is fatal message, it is same as logger.critical
    # 2018-04-08 21:59:19,493 CRITICAL: this is critical message
     
    # 移除一些日志处理器
    logger.removeHandler(file_handler)
     
     
     
    格式化输出技巧
    # 格式化输出
     
    service_name = "Booking"
    logger.error('%s service is down!' % service_name)  # 使用python自带的字符串格式化,不推荐
    logger.error('%s service is down!', service_name)  # 使用logger的格式化,推荐
    logger.error('%s service is %s!', service_name, 'down')  # 多参数格式化
    logger.error('{} service is {}'.format(service_name, 'down')) # 使用format函数,推荐
     
    # 2018-04-08 21:59:19,493 ERROR   : Booking service is down!
     
     
     
    logging.basicConfig
     basicConfig()提供了非常便捷的方式让你配置logging模块并马上开始使用
     
     
    import logging
     
    logging.basicConfig(filename='example.log',level=logging.DEBUG)
    logging.debug('This message should go to the log file')
     
    logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
    logging.debug('This message should appear on the console')
     
    logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
    logging.warning('is when this event was logged.')
     
     备注: 其实你甚至可以什么都不配置直接使用默认值在控制台中打log,用这样的方式替换print语句对日后项目维护会有很大帮助。
     
     
     
  • 相关阅读:
    实验2四则运算结对
    作业5 四则运算 测试与封装 5.1
    0909我对编译的看法
    P2602 [ZJOI2010]数字计数(递推+数位dp写法)
    模数的世界[数论]
    P2312[秦九韶+读入取模+哈希解方程]
    第三章 Python 的容器: 列表、元组、字典与集合
    第二章 Python 基本元素:数字、字符串、变量
    第一章 Python 之初探
    第四章 Python 外壳 :代码结构
  • 原文地址:https://www.cnblogs.com/yuzhaoblog/p/8948322.html
Copyright © 2020-2023  润新知