logging 日志模块

logging(日志模块)

  • 快速编写格式(扩展性不强)

    import logging
    import requests
    
    # 日志配置
    logging.basicConfig(
        filename='log.log',
        format=' %(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p',
        level=logging.ERROR)
    # 异常处理
    try:
        requests.get('http://www.xxx.com')
    except Exception  as e:
        mes = str(e)
        # 日志生成
        logging.error(mes, ext_info=True)    #ext_info=True保存堆栈信息
    
  • 推荐编写方式

    import logging
    file_hander = logging.FileHandler(filename='log.log',mode='a',encoding='utf-8',)
    logging.basicConfig(
        format=%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datafmt='%Y-%m-%d %H:%M:%S %p',
        handlers=[file_handler,],
        level=logging.ERROR
    )
    
    logging.error('你好')
    
  • 更改调用机制:

    import logging
    
    def get_logger():
        file_hander = logging.FileHandler(filename='log.log',mode='a',encoding='utf-	8',)
        logging.basicConfig(
            format=%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
            datafmt='%Y-%m-%d %H:%M:%S %p',
            handlers=[file_handler,],
            level=logging.ERROR
        )
    	return logging
    logger = get_logger()
    
    
    logging.error('你好')
    
  • 推荐日志处理方式+日志切割

    import time
    import logging
    from logging import handlers
    
    file_handler = handlers.TimedRotatingFileHandler(filename='x3.log', when='s', interval=5, encoding='utf-8')
    logging.basicConfig(
        format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p',
        handlers=[file_handler,],
        level=logging.ERROR
    )
    
    for i in range(1,100000):
        time.sleep(1)
        logging.error(str(i))
    
  • 注意事项

    # 在应用日志时,如果想要保留异常的堆栈信息。
    import logging
    import requests
    
    logging.basicConfig(
        filename='wf.log',
        format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p',
        level=logging.ERROR
    )
    
    try:
        requests.get('http://www.xxx.com')
    except Exception as e:
        msg = str(e) # 调用e.__str__方法
        logging.error(msg,exc_info=True)
    
原文地址:https://www.cnblogs.com/bigox/p/10796661.html