记录到两个不同的 .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,则在执行其他参数指定的配置之前,将删除并关闭附加到根记录器的任何现有处理程序。
这将使您的功能成为 -
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
。
请注意,removing/adding 为每个新日志设置新的日志记录处理程序通常不是一个好主意。如果您想登录到 n
个不同的文件,请考虑为它们初始化不同的记录器,并在管理器函数中保留记录器的映射,您的个人日志记录函数可以使用它。
我想将请求日志放在不同的文件中。不幸的是,下面的代码实际上创建了 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,则在执行其他参数指定的配置之前,将删除并关闭附加到根记录器的任何现有处理程序。
这将使您的功能成为 -
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
。
请注意,removing/adding 为每个新日志设置新的日志记录处理程序通常不是一个好主意。如果您想登录到 n
个不同的文件,请考虑为它们初始化不同的记录器,并在管理器函数中保留记录器的映射,您的个人日志记录函数可以使用它。