【发布时间】:2021-05-11 03:02:26
【问题描述】:
我有一本字典,其中包含一些示例数据,如下所示
{"screener": "media", "anchor": "media","reader": "media"}
我想为字典中的每个键创建一个日志文件。我计划在流式传输作业中使用此日志记录,它将被流式传输中的每个批次重用。在这里,我也计划使用每个键的旋转文件处理程序。
这是我的sn-p
import logging
from logging.handlers import RotatingFileHandler
import time
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
dict_store = {"screener": "media", "anchor": "media", "reader": "media"}
dict_log_handler = {}
def createFileHandler(name):
handler = RotatingFileHandler(name, maxBytes=2000000000, backupCount=10)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
return handler
def runBatch():
print("logging batch")
for name in dict_store.keys():
print(name)
if name in dict_log_handler:
print(f"getting logger from dict_handler {name}")
handler = dict_log_handler[name]
else:
handler = createFileHandler(name)
dict_log_handler[name] = handler
logger.addHandler(handler)
logger.info('Hello, world!')
logger.info('Hello, world!')
logger.info('Hello, world!')
logger.info('Hello, world!')
logger.info('Hello, world!')
logger.info('Hello, world!')
logger.removeHandler(handler)
time.sleep(0.1)
for i in range(0, 3):
runBatch()
目前正在按预期工作。我只是想在覆盖或创建自定义处理程序中实现类似的东西(比如如果我们传递一个名称,它应该自动执行这些东西)并且总体预期是它不应该影响性能。
问题是,我想将它包装在一个类中并直接使用它。可能吗?
【问题讨论】:
标签: python logging python-logging log-rotation