分享

Python logging 的简单使用

 Jcstone 2022-02-10

    本文采用简单的方法工厂,配置根logger,实现logging 的简单调用,方便代码调试,记录并在控制台显示py文件和函数、行号及日志信息。

1、创建LogHelper.py    

LogHelper.py主要是对根logger设置日志文件,定义输出格式。日志文件为当前日期为文件名的txt文件,位于应用程序目录的logs子目录

import logging

import logging.handlers

import os

import time

# 初始化logger

def InitLogger(logger):

    logs_dir = "logs"

    if os.path.exists(logs_dir) and os.path.isdir(logs_dir):

        pass

    else:

        os.mkdir(logs_dir)

    # 修改log保存位置

    timestamp = time.strftime("%Y-%m-%d", time.localtime())

    log_filename = '%s.txt' % timestamp

    log_filepath = os.path.join(logs_dir, log_filename)

    FileHandler = logging.handlers.RotatingFileHandler(filename=log_filepath,

                                                       maxBytes=1024 * 1024 * 50,

                                                       encoding='utf-8',

                                                       backupCount=5)

    # 设置输出格式

    formatter = logging.Formatter(

        '%(asctime)s - %(filename)s[line:%(lineno)d] - %(funcName)s - %(levelname)s: %(message)s')

    FileHandler.setFormatter(formatter)

    # 控制台句柄

    console = logging.StreamHandler()

    console.setLevel(logging.NOTSET)

    console.setFormatter(formatter)

    # 添加内容到日志句柄中

    logger.addHandler(FileHandler)

    logger.addHandler(console)

    logger.setLevel(logging.NOTSET)

    return logger



2、根Logger初始化(配置)

主程序引用logging和LogHelper。通过工厂方法获取Logger实例logging.getLogger([name=None]),直接调用LogHelper.InitLogger方法:

LogHelper.InitLogger(logging.getLogger(""))

LogHelper.InitLogger(logging.getLogger())

注:logging.getLogger方法指定name,返回一个名称为name的Logger实例。如果再次使用相同的名字,是实例化一个对象。未指定name,返回Logger实例,名称是root,即根Logger。

 3、logging调用

由于初始化未指定name,返回根logger。主模块初始化根Logger后,以后任意均可直接调研logging的日志方法即可。如下所示:

logging.info('this is a loggging info message')
logging.debug('this is a loggging debug message')
logging.warning('this is loggging a warning message')
logging.error('this is an loggging error message')
logging.critical('this is a loggging critical message')


即可在控制台和日志文件输出日志信息

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多