我有一个 Django 应用程序,其每个 API 调用都与一个 transaction_id 相关联。我想为每个 transactions_id 创建单独的日志文件。简而言之,我希望拥有多个用于记录的文件。
我如何使用 Django 的内置日志系统来做到这一点?
我可以在一个记录器中有多个处理程序。但根据我的要求,FileHandlers 必须在运行时添加,其文件名将是 transaction_id。这是可以做到的。但问题是,如果我一次运行 4 个事务,则 4 个处理程序将被添加到同一个记录器中,并且根据文档日志将被发送到每个处理程序,从而导致 1 个事务日志文件也记录其余 3 个事务的日志。
以下是我带来的:
class TransactionLogger:
def __init__(self, transaction_id):
self.logger = logging.getLogger('transaction_logger')
logger = self.logger
fileHandler = logging.FileHandler(transaction_id, mode='a')
formatter = logging.Formatter('%(levelname)s %(asctime)s %(filename)s:%(lineno)s - %(funcName)s() ] %(message)s')
fileHandler.setFormatter(formatter)
self.logger.addHandler(fileHandler)
self.logger.propagate = False
在每笔交易开始时,我将记录器实例化为:
logger = TransactionLogger(transaction_id).logger
并记录如下:
logger.debug("Hello World")
如何维护n个将动态生成的日志文件并根据transaction_id登录到每个文件而不干扰其他文件。
任何帮助表示赞赏。