首页 / 日志 / python – 防止重复的芹菜日志记录
python – 防止重复的芹菜日志记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 防止重复的芹菜日志记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2292字,纯文字阅读大概需要4分钟。
内容图文
![python – 防止重复的芹菜日志记录](/upload/InfoBanner/zyjiaocheng/811/2b57522eb77a4a5aa587d205abaf37f7.jpg)
如何在这样的应用程序中防止重复的芹菜日志?
# test.py
from celery import Celery
import logging
app = Celery('tasks', broker='redis://localhost:6379/0')
app.logger = logging.getLogger("new_logger")
file_handler = logging.handlers.RotatingFileHandler("app.log", maxBytes=1024*1024, backupCount=1)
file_handler.setFormatter(logging.Formatter('custom_format %(message)s'))
app.logger.addHandler(file_handler)
@app.task
def foo(x, y):
app.logger.info("log info from foo")
我启动应用程序:celery -A test worker –loglevel = info –logfile celery.log
然后我使foo与python -c一起运行“来自test import foo; print foo.delay(4,4)”
这导致celery.log和app.log中都显示“来自foo的日志信息”.
这是app.log内容:
custom_format log info from foo
这里是celery.log内容:
[2017-07-26 21:17:24,962: INFO/MainProcess] Connected to redis://localhost:6379/0
[2017-07-26 21:17:24,967: INFO/MainProcess] mingle: searching for neighbors
[2017-07-26 21:17:25,979: INFO/MainProcess] mingle: all alone
[2017-07-26 21:17:25,991: INFO/MainProcess] celery@jd-t430 ready.
[2017-07-26 21:17:38,224: INFO/MainProcess] Received task: test.foo[e2c5e6aa-0d2d-4a16-978c-388a5e3cf162]
[2017-07-26 21:17:38,225: INFO/ForkPoolWorker-4] log info from foo
[2017-07-26 21:17:38,226: INFO/ForkPoolWorker-4] Task test.foo[e2c5e6aa-0d2d-4a16-978c-388a5e3cf162] succeeded in 0.000783085000876s: None
我考虑从python代码中删除自定义记录器处理程序,但我不想只使用celery.log,因为它不支持旋转文件.我考虑用–logfile / dev / null启动芹菜但是我会松开混合和其他没有出现在app.log中的日志.
我可以阻止“来自foo的日志信息”显示在celery.log中吗?鉴于我从头开始创建记录器并且只设置记录到app.log,为什么在celery.log中显示“来自foo的日志信息”呢?
是否可以通过RotatingFileHandler记录芹菜MainProcess和Worker日志(例如,连接到redis:// localhost:6379/0)(例如进入我的app.log)?
解决方法:
Why is “log info from foo” showing up in celery.log?
日志记录系统基本上是一个logginig.Logger对象的树,主要是logging.Logger在树的根目录中(你得到的是带有调用logging.getLogger()而没有参数的根).
当您调用logging.getLogger(“child”)时,您将获得处理“子”日志的logging.Logger的引用.问题是当你调用logging.getLogger(“child”).info()时,信息消息被传递给“child”,但也传递给“child”的父节点和它的父节点,直到它到达根节点.
为避免将日志发送到父级,您必须设置logging.getLogger(“child”).propagate = False.
内容总结
以上是互联网集市为您收集整理的python – 防止重复的芹菜日志记录全部内容,希望文章能够帮你解决python – 防止重复的芹菜日志记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。