Python 日志记录和 Pydev 调试器?
Python logging and Pydev debugger?
编辑:
使用 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]
谢谢
与 PyCharm 同样的问题。
可能的解决方法 - 注释掉 pycharm/helpers/pydev/pydevd.py 中的 pydev_monkey_qt.patch_qt() 行,对于 Eclipse,它应该位于其他地方
确保在导入日志之前导入 PyQt4
现在在 PyCharm 中为此实施了一个相对晦涩的修复(因为他们没有在其网页中包含 OP 的错误字符串以进行良好的搜索索引):
https://www.jetbrains.com/pycharm/help/python-debugger.html
在 PyCharm 中,转到:
文件 |设置 |构建、执行、部署 | Python调试器
然后取消选中 'PyQt compatible'
编辑:
使用 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]
谢谢
与 PyCharm 同样的问题。 可能的解决方法 - 注释掉 pycharm/helpers/pydev/pydevd.py 中的 pydev_monkey_qt.patch_qt() 行,对于 Eclipse,它应该位于其他地方
确保在导入日志之前导入 PyQt4
现在在 PyCharm 中为此实施了一个相对晦涩的修复(因为他们没有在其网页中包含 OP 的错误字符串以进行良好的搜索索引): https://www.jetbrains.com/pycharm/help/python-debugger.html
在 PyCharm 中,转到: 文件 |设置 |构建、执行、部署 | Python调试器
然后取消选中 'PyQt compatible'