【发布时间】:2018-07-10 18:33:25
【问题描述】:
Python 3.6.4 Pycharm 2017.3
我正在尝试在 level=debug 和控制台 level=error 记录到文件,但似乎正在获取反映在运行控制台中的文件日志(没有格式)以及用于控制台的日志。
我在配置菜单中将该文件设置为别名。记录到文件的行为符合预期。
我从文档中的教程中提取了日志记录配置:
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
# create file handler which logs all debug messages
fh = logging.FileHandler('clsfr.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -
%(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
LOGGER.addHandler(ch)
LOGGER.addHandler(fh)
# from logger calls
LOGGER.error("Test ERROR message")
LOGGER.debug("about to yield {} {}".format(number, year))
LOGGER.debug('iterator returned {} {}'.format(number, year))
LOGGER.info('Queued file key {} - count is {}'.format(id, count))
一些输出到控制台:(全部为红色)
2018-01-31 15:15:40,594 - __main__ - ERROR - Test ERROR message
ERROR:__main__:Test ERROR message
DEBUG:__main__:about to yield 02680309 2000
DEBUG:__main__:iterator returned 02680309 2000
INFO:__main__:Queued file key 02680309_2000_1 - count is 1
DEBUG:__main__:about to yield 02680309 2001
对应输出到文件:(第一行只有红色)
2018-01-31 15:15:40,594 - __main__ - ERROR - Test ERROR message
2018-01-31 15:15:41,822 - __main__ - DEBUG - about to yield 02680309
2000
2018-01-31 15:15:41,823 - __main__ - DEBUG - iterator returned 02680309
2000
2018-01-31 15:15:41,823 - __main__ - INFO - Queued file key
02680309_2000_1 - count is 1
2018-01-31 15:15:41,823 - __main__ - DEBUG - about to yield 02680309
2001
我进行了一些搜索以尝试诊断,这导致我在控制台中运行了几行代码以查看是否有多个 StreamHandler,但看起来没有:
logging.getLogger().handlers
Out[6]: []
ch = logging.StreamHandler()
logger = logging.getLogger('temp')
logger.handlers
Out[9]: []
logger.addHandler(ch)
logger.handlers
Out[11]: [<StreamHandler <stderr> (NOTSET)>]
fh = logging.FileHandler('test.log')
fh
Out[13]: <FileHandler /Users/andyspence/Project/ccML_async/test.log
(NOTSET)>
logger.addHandler(fh)
logger.handlers
Out[15]: [<StreamHandler <stderr> (NOTSET)>,
<FileHandler /Users/andyspence/Project/ccML_async/test.log
(NOTSET)>]
Python 错误或 Pycharm 配置错误??
【问题讨论】:
-
运行你的简化代码(加上三个日志信息、调试、错误)我得到了你想要的结果——终端上的一个错误,文件中的三个。与 PyCharm 2016 相同。你能用日志语句更新问题吗?
-
将日志调用添加到代码中。看起来像一个 Pycharm 配置问题,调用已经足够常规了。
-
如果从控制台/终端运行会产生预期的结果 - 那么就没有任何争论了。如果事实证明它仍然没有按预期工作,那么我们可以再深入研究一下