我正在尝试将变量“log_location”的内容添加到当前记录器中。
log_location = log_folder_location + os.path.sep + log_file_name
logger.debug("log location", str(log_location))
print "log_location: ",log_location
这打印到控制台,但在记录时出错,
Traceback (most recent call last):
File "/usr/lib64/python2.6/logging/__init__.py", line 784, in emit
msg = self.format(record)
File "/usr/lib64/python2.6/logging/__init__.py", line 662, in format
return fmt.format(record)
File "/usr/lib64/python2.6/logging/__init__.py", line 444, in format
record.message = record.getMessage()
File "/usr/lib64/python2.6/logging/__init__.py", line 314, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
打印到,
log_location: /U01/Nova/Logs/DEV-INT/TEST/validation_20170203-164617-5.log
当我在普通的python提示符下尝试时,没有发生此错误 但在使用Flask
时面临同样的问题我试过Logging Python stdout to File... with active stdout (backspacing/updating) 和TypeError: not all arguments converted during string formatting python 这个也是Python: Logging TypeError: not all arguments converted during string formatting
但不明白该怎么做。有人可以使用更简单的语言解释这一点,而不是文档吗?
答案 0 :(得分:3)
仅对logger.debug()
方法调用使用一个参数。即
logger.debug("log location: " + str(log_location))
关于autoformatting功能(我认为你不需要这个,但为了完整起见) - 让我们从文档中看一下:
Logger.debug(msg,* args,** kwargs)
在此记录器上记录具有级别DEBUG的消息。 msg是消息格式字符串,args是合并的参数 使用字符串格式化运算符进入msg。 (注意,这意味着 您可以使用格式字符串中的关键字和单个字符串 字典论证。)
因此,当您在第一个arg中有格式化模板时,多个参数很有用,例如
logger.debug('log location: %s', log_location)