我想在我的RQ工作者中使用logging.config.dictConfig。但是,我发现在运行dictConfig()之后,工作人员将不再提出在生产中无效的异常。
这是我的工人……
事实证明,RQ与其日志记录设置紧密耦合。事实上, Worker class持有一个实例 Logger - 什么时候 dictConfig 被调用,对此记录器的引用中断。
Worker
Logger
dictConfig
解决方案是包括一个 rq.worker 我的配置中的记录器:
rq.worker
config = { 'version': 1, 'formatters': { 'rq': { 'format': '%(asctime)s %(message)s', 'datefmt': '%H:%M:%S' } }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'stream': 'ext://sys.stdout', 'level': 'DEBUG' }, 'rq': { 'class': 'rq.utils.ColorizingStreamHandler', 'formatter': 'rq' } }, 'loggers': { 'rq.worker': { 'level': 'INFO', 'handlers': ['rq'], 'propagate': False } }, 'root': { 'class': 'logging.RootLogger', 'level': 'DEBUG', 'handlers': ['console'] } }