gpt4 book ai didi

python - 如何在 Python 中的单个日志记录中记录两个变量值?

转载 作者:太空狗 更新时间:2023-10-29 18:00:16 25 4
gpt4 key购买 nike

我正在使用 Python,我需要使用记录器,所以我决定开始使用 RotatingFileHandler。下面是我的 logging.conf 文件

[loggers]
keys=root

[handlers]
keys=logfile

[formatters]
keys=logfileformatter

[logger_root]
level=DEBUG
handlers=logfile

[formatter_logfileformatter]
format=%(asctime)s %(name)-12s: %(levelname)s %(message)s

[handler_logfile]
class=handlers.RotatingFileHandler
level=NOTSET
args=('ookagent.log', 'a', 50000000000, 5)
formatter=logfileformatter

下面是我的 Python 脚本,我可以从中成功登录文件。但我正在尝试从单个日志记录中记录两个变量值,如下所述 -

#!/usr/bin/python
import logging
import logging.config
import logging.handlers

# using RotatingFileHandler for logging purpose
logging.config.fileConfig('logging.conf')
ooklogger = logging.getLogger('')

list1 = ['abc', 'def', 'ghi']
list2 = ['jkl', 'mno', 'pqr']

ooklogger.info("Test %s" % (list1, list2))

但是每当我运行上面的 Python 脚本时,我总是会遇到以下错误 -

ooklogger.info("Test %s" % (list1, list2))
TypeError: not all arguments converted during string formatting

知道我做错了什么吗?

最佳答案

python 日志记录函数支持内置字符串替换 documented here .此日志记录支持 arg 和 kwarg 替换。

from sys     import stderr
from logging import getLogger, StreamHandler, Formatter, DEBUG

l = getLogger()
sh = StreamHandler(stderr)
sh.setLevel(DEBUG)
f = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
sh.setFormatter(f)
l.addHandler(sh)
l.setLevel(DEBUG)

L0 = ['abc', 'def', 'ghi']
L1 = ['jkl', 'mno', 'pqr']

l.info('%(list_0)s - %(list_1)s', { 'list_0': L0, 'list_1' : L1 })
# identical to
l.info('%s - %s', L0, L1)
# identical to
l.info('%s - %s' % (L0, L1))

关于python - 如何在 Python 中的单个日志记录中记录两个变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com