【问题标题】:Flask Python Logging: TypeError while logging file path in FileFlask Python日志记录:在文件中记录文件路径时出现TypeError
【发布时间】:2017-06-20 19:16:21
【问题描述】:

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

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

【问题讨论】:

  • 您使用的是哪个 Python 版本?也许有unicode问题? log_folder_location 和 log_file_name 是什么类型?
  • 我需要您的记录器设置,这可能会有所帮助。

标签: python logging


【解决方案1】:

logger.debug() 方法调用只使用一个参数。 IE。

logger.debug("log location: " + str(log_location))

关于自动格式化功能(我认为您不需要这个,但为了完整起见) - 让我们从文档中查看:

Logger.debug(msg, *args, **kwargs)

在此记录器上记录一条带有 DEBUG 级别的消息。 msg 是消息格式字符串,args 是合并的参数 使用字符串格式化运算符进入 msg。 (请注意,这意味着 您可以在格式字符串中使用关键字,以及单个 字典参数。)

因此,例如,当您在第一个参数中有格式化模板时,多个参数很有用

logger.debug('log location: %s', log_location)

【讨论】:

  • 是的,这是正确的方法,实际上我在这段代码上方使用了logger,&忘记删除“,”,将打印stmts更改为logger.debug..现在我想起来了,我问这个感觉很愚蠢......但是是的,非常感谢这解决了这个问题(经过测试)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
相关资源
最近更新 更多