我想修改我当前的日志记录设置,而不必将记录器对象作为参数传递给函数。目前在每个模块的顶部,我定义了一个 LOG 对象
LOG = logging.getLogger(__name__)
我想更改日志记录,以便:
- 日志记录到文件中,但前提是执行上下文在 Celery 任务中
- 每个任务都有一个文件
- 无需修改每个任务的代码
因此,如果您有两个任务:
@task
def taskOne():
LOG.log("in task one")
foo.foo()
@task
def taskTwo():
LOG.log("in task two")
foo.foo
在模块 foo 中:
def foo():
LOG.log("in foo")
然后:
- 执行
taskOne
应将“in task one\nin foo”发送到名为“taskOne.log”的文件中 - 执行
taskTwo
应该将“in task two\nin foo”发送到名为“taskTwo.log”的文件中 - 在 celery 任务之外执行
foo
不应将日志发送到文件
我正在考虑提出一个处理程序来检查调用堆栈以查看它当前是否正在芹菜任务的上下文中执行,如果是,则记录到文件中。但是我不确定该解决方案是否有效,或者它是否实施了不良做法。