Python 日志记录和 Pydev 调试器?

Posted

技术标签:

【中文标题】Python 日志记录和 Pydev 调试器?【英文标题】:Python logging and Pydev debugger? 【发布时间】:2015-05-02 14:31:03 【问题描述】:

编辑:

使用 Liclipse 1.2.1 而不是 1.3.0 或 1.4.0 可以正常工作。变更日志表明 Pydev 3.9.1 和 Eclipse 4.4.1 更新为 1.3.0。似乎打破了日志调试。


将 Liclipse 和 Pydev 调试器(和 CPython)与以下代码示例一起使用,得到该错误:

 logging.config.dictConfig(config)
 File "C:\Python27\lib\logging\config.py", line 794, in dictConfig
   dictConfigClass(config).configure()
 File "C:\Python27\lib\logging\config.py", line 576, in configure
   '%r: %s' % (name, e))
 ValueError: Unable to configure handler 'console': 'DictConfigurator' object has no attribute 'startswith'

不调试没有问题,日志模块是不是需要运行环境,只能在上面运行?

这里是使用的代码示例:

import logging.config
import yaml

def setup_logging():    
    default_path = 'logger.conf' 
    default_level = logging.DEBUG

    if os.path.exists(default_path):
        with open(default_path, 'rt') as f:
            config = yaml.load(f.read())
        logging.config.dictConfig(config)
    else:
        logging.basicConfig(level=default_level)

这是我的 logger.conf :

version: 1
disable_existing_loggers: False

formatters:
    simple:
        format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    lineInfo:
        format: "%(asctime)s - Line: %(lineno)d - %(name)s - %(levelname)s - %(message)s"

handlers:
    console:
        class: logging.StreamHandler
        level: DEBUG
        formatter: lineInfo
        stream: ext://sys.stdout
    debug_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: DEBUG            
        formatter: lineInfo
        filename: logs/debug.log
        maxBytes: 10485760 # 10MB
        backupCount: 10
        encoding: utf8
    info_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: INFO            
        formatter: simple
        filename: logs/info.log
        maxBytes: 10485760 # 10MB
        backupCount: 10
        encoding: utf8
    error_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: ERROR            
        formatter: simple
        filename: logs/errors.log
        maxBytes: 10485760 # 10MB
        backupCount: 10
        encoding: utf8
root:
    level: DEBUG
    handlers: [console, info_file_handler, error_file_handler, debug_file_handler]

谢谢

【问题讨论】:

【参考方案1】:

现在在 PyCharm 中实现了一个相对晦涩的修复(因为他们没有在他们的网页中包含 OP 的错误字符串以获得良好的搜索索引): https://www.jetbrains.com/pycharm/help/python-debugger.html

在 PyCharm 中,转到: 文件 |设置 |构建、执行、部署 | Python 调试器

然后取消选中“PyQt 兼容”

【讨论】:

【参考方案2】:

确保在导入日志之前导入 PyQt4

【讨论】:

为我工作了 PyQt5【参考方案3】:

PyCharm 也有同样的问题。 可能的解决方法 - 注释掉 pycharm/helpers/pydev/pydevd.py 中的 pydev_monkey_qt.patch_qt() 行,对于 Eclipse,它应该位于其他地方

【讨论】:

非常感谢,PyCharm 4.0.5 对我有用。 谢谢也为我工作...与EclipseLiclipse Eclipse Mars:/home//.p2/pool/plugins Liclipse:/opt/liclipse/plugins/org .python.pydev_4.3.0.201508181931/pysrc/pydevd.py

以上是关于Python 日志记录和 Pydev 调试器?的主要内容,如果未能解决你的问题,请参考以下文章

Python 记录器 - 将 STDOUT 重定向到日志文件以及任何调试消息

PyDev unittesting:如何在“捕获的输出”中捕获记录到 logging.Logger 的文本

Python日志—Python日志模块logging介绍

在 Python Django 中启用调试时,如何仅关闭 SqlAlchemy 数据库池的日志记录?

如何在 Django 调试工具栏中使用日志记录?

python日志模块-logging