Python Logger不能写入文件?



我正在尝试使用下面的代码在目录内创建日志文件-

def createLogger(name,log_path=None):

logger = logging.getLogger(name) 

logger.setLevel(logging.DEBUG)
logger.setLevel(logging.ERROR)
logger.setLevel(logging.INFO)
logger.setLevel(logging.CRITICAL)

formatter = logging.Formatter("%(asctime)s - %(levelname)-8s - %(message)s")
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
if log_path is not None:

file_handler = logging.FileHandler(log_path)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

return logger
name = "temp_logs"
file = open(os.path.join(f'{current_date}', f'{name}_{current_timestamp}.txt'), 'w')
log_path  = f"{current_date}/{name}_{current_timestamp}.txt"
logger = createLogger(name = name ,log_path = log_path)
write_message = logger.debug('This is a test file')
file.writelines(str(write_message))
file.close()

但是,它只是将None作为消息写入文件中。我错过什么了吗?请帮助。

几个问题。setLevel设置阈值。当多次调用时,最后一个获胜(即CRITICAL)。您将不会看到任何调试消息、警告或错误。

同样,您正在直接写入日志文件。用格式化程序设置一个日志记录器,然后绕过它,这有什么意义?

试试这个:

createLogger()中只留下这个setLevelcall:logger.setLevel(logging.DEBUG),然后:

name = "temp_logs"
logger = createLogger(name = name ,log_path = './test.log')
logger.debug('This is a debug message')
logger.error('This is an error')

最新更新