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()
  • 相关阅读:
    Scanner和BufferedReader
    java annotation
    java获取短uuid
    定时任务线程
    sql 查询最近30分钟或者自定义时间数据
    查看base64编码图片
    oracle 的PACKAGE恢复过程
    Oracle BFILE备忘
    读取Spring的配置文件applicationContext.xml的5种方法
    解决eclipse ctrl+鼠标左键不能用
  • 原文地址:https://www.cnblogs.com/lilyo/p/11989456.html
Copyright © 2011-2022 走看看