zoukankan      html  css  js  c++  java
  • python-logging模块

    一、logging模块简介

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

    二、logging模块使用  

    1、输出日志信息参数:

    %(levelno)s:打印日志级别的数值
    %(levelname)s:打印日志级别的名称
    %(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
    %(filename)s:打印当前执行程序名
    %(funcName)s:打印日志的当前函数
    %(lineno)d:打印日志的当前行号
    %(asctime)s:打印日志的时间
    %(thread)d:打印线程ID
    %(threadName)s:打印线程名称
    %(process)d:打印进程ID

    2、基础代码

    # 实例化日志模块
    logger = logging.getLogger()
    # 定义日志级别,默认是logging.WARNNING
    logger.setLevel(logging.INFO)
    # 定义处理程序,logPath日志路径,"output.log"日志文件名
    handler = logging.FileHandler(os.path.join(logPath, "output.log"))
    # 定义处理程序级别
    handler.setLevel(logging.INFO)
    # 定义的格式化程序
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    # 添加处理程序
    logger.addHandler(handler)
    # 打印信息
    logger.info("Start Print log")
    logger.debug("Start Print log")
    logger.warning("Start Print log")
    logger.info("Start Print log")

    3、把Log的基础设置封装成一个Log类

    import logging
    from datetime import datetime
    import os
    
    
    class Log:
        def __init__(self):
            # global 定义全局变量
            global logPath, resultPath, proDir
            proDir = os.path.split(os.path.realpath(__file__))[0]  # 获得当前路径
            # 拼接result路径
            resultPath = os.path.join(proDir, "result")
            # result文件是否存在
            if not os.path.exists(resultPath):
                os.mkdir(resultPath)  # 不存在,创建result文件
            # 拼接log文件路径,并定义文件名格式
            logPath = os.path.join(resultPath, str(datetime.now().strftime("%Y%m%d%H%M%S")))
            # log文件是否存在
            if not os.path.exists(logPath):
                os.mkdir(logPath)  # 不存在,创建log文件
            # 实例化日志模块
            self.logger = logging.getLogger()
            # 定义日志级别
            self.logger.setLevel(logging.INFO)
            # 定义处理程序
            handler = logging.FileHandler(os.path.join(logPath, "output.log"))
            # 定义处理程序级别
            handler.setLevel(logging.INFO)
            # 定义的格式化程序
            formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            # 把定义的格式放入日志处理程序里
            handler.setFormatter(formatter)
            # 添加处理程序
            self.logger.addHandler(handler)

    在其他类调用

    from common.Log import Log
    import logging
    
    
    class Test:
        def __init__(self):
            self.log = Log()  # 实例化Log,执行Log构造函数的配置
            self.logger = logging.getLogger()  # 实例化logger
    
        def get_attr(self):
            # 直接调用
            self.logger.info("这是 info ----")
            self.logger.debug("Start Print log")
            self.logger.warning("Start Print log")
    
    
    t = Test()
    t.get_attr()
  • 相关阅读:
    servlet
    过滤器
    拦截器
    logback
    hibernate(1)
    函数的关键字参数
    函数的不定长参数
    打印星形三角
    九九乘法表
    udp客户端收发数据流程
  • 原文地址:https://www.cnblogs.com/lilyo/p/11989456.html
Copyright © 2011-2022 走看看