【问题标题】:Logging Module Python [closed]日志记录模块 Python [关闭]
【发布时间】:2021-11-23 22:20:25
【问题描述】:

尝试学习使用日志记录模块时,当我在新的文件编辑器选项卡中运行下面的代码时,我会收到一组很长的消息,其中代码下方包含一个简短的示例。我的期望是通过循环获得 2021-05-23 Time - DEBUG - i is 0 total is 0, etc.。另外,阶乘函数是故意不正确的。

import logging
logging.basicConfig(level = logging.DEBUG, format = ' %(actime)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')

--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 436, in format
    return self._format(record)
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 432, in _format
    return self._fmt % record.__dict__
KeyError: 'actime'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 1081, in emit
    msg = self.format(record)
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 925, in format
    return fmt.format(record)
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 667, in format
    s = self.formatMessage(record)
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 636, in formatMessage
    return self._style.format(record)
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 438, in format
    raise ValueError('Formatting field not found in record: %s' % e)
ValueError: Formatting field not found in record: 'actime'
Call stack:
  File "C:\Users\XXXXX\Anaconda3\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\XXXXX\Anaconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\spyder_kernels\console\__main__.py", line 23, in <module>
    start.main()
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\spyder_kernels\console\start.py", line 332, in main
    kernel.start()
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 612, in start
    self.io_loop.start()
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 149, in start
    self.asyncio_loop.run_forever()
  File "C:\Users\XXXXX\Anaconda3\lib\asyncio\base_events.py", line 570, in run_forever
    self._run_once()
  File "C:\Users\XXXXX\Anaconda3\lib\asyncio\base_events.py", line 1859, in _run_once
    handle._run()
  File "C:\Users\XXXXX\Anaconda3\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\ioloop.py", line 690, in <lambda>
    lambda f: self._run_callback(functools.partial(callback, future))
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\ioloop.py", line 743, in _run_callback
    ret = callback()
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\gen.py", line 787, in inner
    self.run()
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\gen.py", line 748, in run
    yielded = self.gen.send(value)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 365, in process_one
    yield gen.maybe_future(dispatch(*args))
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\gen.py", line 209, in wrapper
    yielded = next(result)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 268, in dispatch_shell
    yield gen.maybe_future(handler(stream, idents, msg))
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\gen.py", line 209, in wrapper
    yielded = next(result)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 543, in execute_request
    self.do_execute(
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\tornado\gen.py", line 209, in wrapper
    yielded = next(result)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 306, in do_execute
    res = shell.run_cell(code, store_history=store_history, silent=silent)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 536, in run_cell
    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2877, in run_cell
    result = self._run_cell(
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2923, in _run_cell
    return runner(coro)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\IPython\core\async_helpers.py", line 68, in _pseudo_sync_runner
    coro.send(None)
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3146, in run_cell_async
    has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3338, in run_ast_nodes
    if (await self.run_code(code, result,  async_=asy)):
  File "C:\Users\XXXXX\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3418, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-16-7a41feee5232>", line 1, in <module>
    print(factorial(5))
  File "<ipython-input-15-a28d1ab751d9>", line 6, in factorial
    logging.debug('i is' + str(i) + ', total is ' +str(total))
Message: 'i is1, total is 0'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 436, in format
    return self._format(record)
  File "C:\Users\XXXXX\Anaconda3\lib\logging\__init__.py", line 432, in _format
    return self._fmt % record.__dict__
KeyError: 'actime'

During handling of the above exception, another exception occurred:

【问题讨论】:

  • 你知道那是回溯而不是日志吧?
  • asctime 中的错字。

标签: python logging spyder error-logging


【解决方案1】:

您在设置格式时有错字:

logging.basicConfig(level = logging.DEBUG, format = ' %(actime)s - %(levelname)s - %(message)s')

actime 应该是asctime

【讨论】:

  • 感谢您回答了一个愚蠢的问题,我以为错别字已经过审核了。
猜你喜欢
  • 1970-01-01
  • 2017-06-04
  • 2011-11-29
  • 1970-01-01
  • 2020-08-11
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多