Python logging模块运行代码报KeyError: 'actime'错误求助
问题原因
- 核心报错触发原因是
logging.basicConfig的format参数内的时间字段拼写错误:你填写的%(actime)s不符合logging模块的内置字段规范,正确的日志时间字段名为%(asctime)s,日志记录对象不存在actime属性,因此直接触发KeyError。 - 从报错路径可以看出你使用的是Spyder编辑器,这类复用Python内核的工具会残留之前的logging配置,就算第一次修改完拼写重新运行,也可能因为旧配置没清除导致
basicConfig不生效。
修正后的可运行代码
import logging # Spyder/Jupyter等内核复用环境需先加下面两行清除残留配置 for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) # 把actime改为asctime即可匹配预期输出格式 logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s - %(levelname)s - %(message)s') logging.debug('Start of Program') def factorial(n): logging.debug('start of factorial(%s)' % (n)) total = 1 # 你已明确阶乘函数是故意写错的,此处逻辑保留未修改 for i in range(n + 1): total *= i logging.debug('i is ' + str(i) + ', total is ' +str(total)) logging.debug('end of factorial(%s)' % (n)) return total print(factorial(5)) logging.debug('end of program')
补充说明
原代码中打日志的格式化字符串多写了多余的%%,如果不需要在日志中输出百分号可以直接删除,避免生成的日志内容出现冗余符号。修改后运行即可生成你预期的「日期时间 - DEBUG - 具体日志内容」格式的日志。
内容的提问来源于stack exchange,提问作者johnsmith_228
相关产品推荐
相关产品推荐

