我刚开始使用PyCharm,有没有办法显示调试和信息警告?
import logging
logger = logging.getLogger('tipper')
logger.setLevel(logging.DEBUG)
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')warn、error、critical全部显示:
/home/username/someproject/.someprojectenv/bin/python3/home/username/someproject/go.py
warn message
error message
critical message
Process finished with exit code 0但是,调试信息不会显示。
发布于 2014-03-25 00:47:21
这个问题与PyCharm无关,而是与日志记录配置的工作方式有关。如果您尝试编写在普通python交互会话中显示的代码,则会得到相同的输出:
>>> import logging
>>> logger = logging.getLogger('tipper')
>>> logger.setLevel(logging.DEBUG)
>>> logger.debug('debug message')
>>> logger.info('info message')
>>> logger.warn('warn message')
warn message
>>> logger.error('error message')
error message
>>> logger.critical('critical message')
critical message问题是设置logger__的级别是不够的!您还必须向记录器添加一个处理程序,否则记录器将简单地将消息向上转发。消息将最终到达root记录器,默认情况下,该记录器具有logging.WARN级别,因此会丢弃DEBUG级别的消息。
但是,如果您向logger添加一个处理程序,则一切正常:
>>> logger.addHandler(logging.StreamHandler())
>>> logger.debug('test')
test您可以为每个记录器设置多个处理程序,并且每个处理程序可以具有不同的日志记录级别。
有关记录器和处理程序级别的更多信息,请参阅this问题。我还建议仔细阅读logging模块的文档和各种指南(例如logging How-To ),因为它具有非常高级的配置。
此外,python3.2还提供了一个dictConfig函数,它允许您将日志层次结构的配置指定为字典,而不必手动创建每个处理程序和记录器。
发布于 2018-10-02 17:20:11
为了让它运行,非常麻烦的解决办法就是覆盖日志记录函数。它可能会派上用场,有时你只是想快速浏览一下,而不是设置整个调试级别。
!不要在生产中使用它!
logging.debug = print
logging.info = print发布于 2020-10-23 03:42:20
import logging
import datetime
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s [%(levelname)8.8s] %(message)s",
handlers=[logging.StreamHandler(),
logging.FileHandler(f'log/{datetime.datetime.now().isoformat().replace(":", "-")}.log', encoding='utf-8')],
)
logger = logging.getLogger(__name__)Ad Bakuriu说,Python的默认日志级别是WARNING,因为否则输出将会被淹没。
作为对他们答案的补充,还可以使用上面演示的basicConfig。这会修改所有其他记录器继承的根记录器的设置,这意味着您不必在项目中的每个文件中都设置DEBUG。请注意,您导入的库也将在此级别上记录(除非您显式排除它们)。如果根记录器已经初始化,这将不会执行任何操作,除非您传递force=True。
https://stackoverflow.com/questions/22612913
复制相似问题