zoukankan      html  css  js  c++  java
  • python-logging日志模块,以及封装实现

    前言

    是Python内置的标准模块,主要用于输出运行日志

    基本语法

    
    import logging
    
    # # logging模块默认设置的日志级别是warning,而debug和info的级别是低于warning的,所以不会打印这两种日志信息
    # logging.basicConfig(level=logging.DEBUG)
    # logging.debug("debug信息")
    # logging.info("info信息")
    # logging.warning("warning信息")
    # logging.error("error信息")
    # logging.critical("critical信息")
    
    # 创建一个logger对象,并且设置默认的日志级别
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    
    # 创建日志格式对象
    format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    
    #创建FileHandler对象---输出文件日志
    fp = logging.FileHandler('test.log','a',encoding='utf-8')
    
    # fp.setLevel(logging.DEBUG)
    fp.setFormatter(format)
    logger.addHandler(fp)
    
    
    # 创建流对象----控制台输出日志
    sp = logging.StreamHandler()
    sp.setFormatter(format)
    logger.addHandler(sp)
    logger.setLevel(logging.DEBUG)
    
    logger.info('文件记录日志')
    

    封装log实现

    
    import os
    import logging
    import time
    from common.configutils import config_utils
    
    
    current_path = os.path.dirname(__file__)
    log_output_path = os.path.join( current_path,'..', config_utils.LOG_PATH  )
    
    class LogUtils:
        def __init__(self,log_path=log_output_path):
            # 创建一个logger对象,并且设置默认的日志级别(必须设置默认日志级别)
            log_level = int(config_utils.LOG_LEVER)
            self.logger = logging.getLogger()   #创建日志对象
            self.logger.setLevel(log_level)
            self.log_name = os.path.join(log_path, 'ApiTest_%s.log' % time.strftime('%Y_%m_%d'))
    
            # 创建日志格式对象
            format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') #创建日志格式对象
            # 创建FileHandler对象
            fp = logging.FileHandler(self.log_name, 'a', encoding='utf-8')
            fp.setLevel(log_level)
            fp.setFormatter(format)
            self.logger.addHandler(fp)
    
            # 创建流对象
            sp = logging.StreamHandler()
            sp.setFormatter(format)
            self.logger.addHandler(sp)
            self.logger.setLevel(log_level)
    
            sp.close()
            fp.close()
    
        def get_log(self):
            return self.logger
    
    
    if __name__ == '__main__':
        logger = LogUtils().get_log()
        logger.debug("debug测试写日志功能")
    
  • 相关阅读:
    jupyter notebook 远程连接访问服务器
    spark py4j.protocol.Py4JNetworkError: An error occurred while trying to conn
    cudart64_101.dll not found解决方法
    windows tensorflow无法下载Fashion-mnist的解决办法
    dataframe apply函数多个结果拆分给多列
    tensorflow安装
    pandas DataFrame中agg聚合后重命名列标题
    操作系统-第五章-进程调度
    操作系统-第四章-多线程编程
    操作系统-第三章-进程
  • 原文地址:https://www.cnblogs.com/ritaliu/p/13438083.html
Copyright © 2011-2022 走看看