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")

  python-logging模块_第1张图片

  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()

你可能感兴趣的:(python-logging模块)