1

我想修改我当前的日志记录设置,而不必将记录器对象作为参数传递给函数。目前在每个模块的顶部,我定义了一个 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不应将日志发送到文件

我正在考虑提出一个处理程序来检查调用堆栈以查看它当前是否正在芹菜任务的上下文中执行,如果是,则记录到文件中。但是我不确定该解决方案是否有效,或者它是否实施了不良做法。

4

0 回答 0