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以后,就可以看到日志文件了:
可以看到,这两个py文件的日志都记录到logging_test.log文件中,结果还是比较理想。