下面是Python对logging日志的封装攻略:
1. 理解 logging 模块的基本概念
logging 模块是Python内置的日志管理库,用于输出程序运行时的日志信息。为了更好的封装 logging 模块,我们需要先理解它的基本概念。
logging 模块中包含以下几个重要的类:
- Logger:logger是一个提供了应用程序可直接使用的接口。它负责处理日志记录、存储和分发日志。
- Handler:handler 系统可用的日志存储和处理方式,如StreamHandler、FileHandler、SMTPHandler等。
- Formatter:formatter 格式化日志信息的方式,可自定义格式。
- Filter:过滤器,通过预设条件对日志进行过滤,然后将符合条件的日志传递给handler。
2. 封装 logging 模块
根据以上的 logging 模块基本概念,我们可以将其进行封装,以方便应用程序的使用。下面是一个简单的封装示例:
import logging
class MyLogger(object):
def __init__(self, logger_name: str):
self.logger = logging.getLogger(logger_name)
self.logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
self.logger.addHandler(handler)
def info(self, message: str):
self.logger.info(message)
def error(self, message: str):
self.logger.error(message)
以上代码中,我们通过一个MyLogger类进行了完整的封装,提供了info和error方法供外部程序使用。MyLogger通过logger_name进行初始化,然后调用Logger类的相关方法对日志进行处理。我们还添加了一个 StreamHandler,输出日志到标准输出。
另外,我们还可以进行更多的参数设置、优化和扩展,例如:
- 将日志记录到文件中:在初始化MyLogger时添加FileHandler即可。
- 添加Filter:按需添加。
- 封装成单例模式,提高实例利用率:在MyLogger中添加单例模式即可。
3. 实际使用示例
以下是两个使用 MyLogger 进行日志输出的示例:
from mylogger import MyLogger
logger = MyLogger('test')
try:
result = 1 / 0
except Exception as e:
logger.error('Divided by zero:', str(e))
from mylogger import MyLogger
logger = MyLogger('test')
logger.info('Initializing...')
for i in range(10):
logger.info('Processing %s...' % i)
logger.info('Done!')
以上示例演示了如何使用 MyLogger 进行日志输出,便于我们在程序运行时进行监控和调试。
结语
总结一下,Python对logging日志的封装需要我们先理解logging模块的基本概念,然后根据需求进行封装,通过自定义的MyLogger类提供方便的接口供外部程序使用。另外,我们也可以在封装过程中添加更多的参数设置、优化和扩展,以满足运行时的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 如何对logging日志封装 - Python技术站