Flask Python Logging:在File中记录文件路径时出现TypeError

时间:2017-02-03 12:03:39

标签: python logging

我正在尝试将变量“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

但不明白该怎么做。有人可以使用更简单的语言解释这一点,而不是文档吗?

1 个答案:

答案 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)