8

更新:原来,这不是 cron 的功能。从命令行运行脚本时,如果它实际上有记录要处理并与 ElasticSearch 通信,我会得到相同的行为。


我有一个运行 python 脚本的 cron 作业,该脚本用于pyelasticsearch索引 ElasticSearch 实例中的一些文档。该脚本在命令行中运行良好,但通过 cron 运行时,会导致以下错误:

找不到记录器“elasticsearch.trace”的处理程序

显然,只有在 cron 下运行时才会出现一些日志记录配置问题,但我不清楚它是什么。有什么见解吗?

4

1 回答 1

9

正如我在pyelasticsearch repo的示例elasticsearch.trace中看到的那样,我通过为记录器显式配置处理程序解决了这个问题。

导入 pyelasticsearch 后,像这样设置一个处理程序:

tracer = logging.getLogger('elasticsearch.trace')
tracer.setLevel(logging.INFO)
tracer.addHandler(logging.FileHandler('/tmp/es_trace.log'))

我对保留跟踪日志不感兴趣,所以我使用了近在咫尺的 Django NullHandler

from django.utils.log import NullHandler
tracer = logging.getLogger('elasticsearch.trace')
tracer.setLevel(logging.INFO)
tracer.addHandler(NullHandler())
于 2015-11-25T08:35:33.227 回答