繁体   English   中英

记录到两个不同的 .log 文件

[英]Logging to two different .log files

我想将请求日志放在不同的文件中。 不幸的是,下面的代码实际上创建了 2 个不同的 .log 文件,但所有日志都在第一个文件中,而第二个文件完全是空的。 是否可以设置 basicConfig 以便日志落在不同的文件中?

import logging
import time

def example_request_handler(name):
    logging.basicConfig(
        level=logging.INFO,
        format="%(asctime)s [%(levelname)s] %(message)s",
        handlers=[
            logging.FileHandler(f"{name}.log"),
            logging.StreamHandler()])
    logging.info(name)

example_request_handler("first_request1")
example_request_handler("secound_request2")

在此处输入图像描述

一旦将日志记录处理程序添加到logging.basicConfig中,即使在您重新配置它们之后,它们仍将保持原样。

Python3.8中,在logging.basicConfig中引入了一个新的force参数。 如果此关键字参数指定为 true,则在执行其他 arguments 指定的配置之前,将删除并关闭附加到根记录器的任何现有处理程序。

那将使您的 function 成为 -

import logging
import time

def example_request_handler(name):
    logging.basicConfig(
        level=logging.INFO,
        force = True,
        format="%(asctime)s [%(levelname)s] %(message)s",
        handlers=[
            logging.FileHandler(f"{name}.log"),
            logging.StreamHandler()])
    logging.info(name)

example_request_handler("first_request1")
example_request_handler("second_request2")

上面应该只在第二个文件中记录second_request2

请注意,为每个新日志删除/添加新的日志处理程序通常不是一个好主意。 如果您想登录到n不同的文件,请考虑为它们初始化不同的记录器,并在您的个人记录功能可以使用的管理器 function 中保留记录器的映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM