python日志logging的用法

python日志看起比较简单,要用起来稍微有点复杂,基础用法网上也介绍得比较多,下面就最近遇见的问题,作一个简单的介绍。就是在两个以上的python文件中要记录日志,怎么才能实现在一个地方配置,多个地方使用的情景。

直接上配置代码:

logging_config.py

# -*- coding: UTF-8 -*-

import logging
from logging import FileHandler

class LoggerTest:
   
    @classmethod
    def get_logger(cls,name):
        #name表示模块的名字,调用函数时传入,以便知道来自哪里
        logger = logging.getLogger(name)
        
        logger.setLevel(logging.DEBUG)
        # 文件处理器,设置的级别为INFO
        file_handler = FileHandler(filename="logging_test.log")
        # 创建一个格式器
        formatter = logging.Formatter(fmt='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%Y-%m-%d %H:%M:%S')
        # 作用在handler上
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
        return logger

思路就是在一个单独文件里面,写一个类方法,其它需要用到日志记录的,都调用这个代码。

如:

logging_test2.py

# -*- coding: UTF-8 -*-

from logging_config import LoggerTest

class LoggingTest2:
    logger = LoggerTest.get_logger(__name__)
    
    def __init__(self):       
        self.logger.info("this is test2")

logging_test.py

# -*- coding: UTF-8 -*-

from logging_test2 import LoggingTest2
from logging_config import LoggerTest

class LoggingTest:
    logger = LoggerTest.get_logger(__name__)
    
    def __init__(self):        
        self.logger.info("this is test")

if __name__=='__main__':
    LoggingTest()
    LoggingTest2()

logging_test2.py、logging_test.py两个文件中,都用到了日志记录的功能,用到的日志对象都来自logging_config.py中的LoggerTest.get_logger,从而实现了只在一处配置的用法。

运行logging_test.py以后,就可以看到日志文件了:

python日志logging的用法_第1张图片

 可以看到,这两个py文件的日志都记录到logging_test.log文件中,结果还是比较理想。

你可能感兴趣的:(python,开发语言)