Python:多个记录器将日志写入类似的文件
根据需求,我需要为所有输入生成单独的日志文件,该文件将转到单独的目录。代码如下-Python:多个记录器将日志写入类似的文件,python,logging,Python,Logging,根据需求,我需要为所有输入生成单独的日志文件,该文件将转到单独的目录。代码如下- def setup_logger(logger_name, log_filename): import logging logger = logging.getLogger(logger_name) logger.setLevel(logging.DEBUG) file_handler = logging.FileHandler(log_filename, 'w') form
def setup_logger(logger_name, log_filename):
import logging
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(log_filename, 'w')
formatter = logging.Formatter(_FORMAT)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger
在处理输入之前将调用此函数-
logger = None
def foo(input_string):
global logger
logger = setup_logger('app', '/opt/data/'+input_string+'.log')
# do processing and dumping into logs
# this function will call one recursive function to process data
logger = None # destroying logger object
if __name__ == "__main__":
import sys
for inp in sys.argv[1:]:
foo(inp)
现在我的问题是-在一个日志文件中,有预期输入字符串的日志,但同时还有其他输入字符串的日志-最后追加。
这些日志也会出现在它们的日志文件中
对这个奇怪的问题有什么想法吗 logger=logging.getLogger(logger\u name)调用将始终为给定的
logger\u name
返回相同的logger
对象。这里发生的情况是,每次调用setup\u logger
时,您都会向“app”记录器添加一个FileHandler
首先尝试删除所有处理程序,例如:
def setup_logger(logger_name, log_filename):
import logging
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(log_filename, 'w')
formatter = logging.Formatter(_FORMAT)
file_handler.setFormatter(formatter)
# Replace the previous handlers with the new FileHandler
for old_handler in logger.handlers:
logger.removeHandler(old_handler)
logger.addHandler(file_handler)
return logger
因此'/opt/data/'+argv[0]+'.log'包含'/opt/data/'+argv[1]+'.log'的日志?@user3125280号。。它也有argv[2]或argv[3]或两者的日志。-没有具体的模式。。