[英]Pycharm duplicating file logging in console
Python 3.6.4 Pycharm版本2017.3
我试图登录到级别= debug的文件和控制台级别= 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
我进行了一些搜索以尝试诊断,从而导致我在控制台中运行了几行代码,以查看是否有多个StreamHandlers,但看起来没有:
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配置错误
来自终端的结果是相同的。
我查看了我的模块,并删除了未使用的记录器定义。
然后代码按预期执行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.