【问题标题】:APScheduler logger for scheduller and executor用于调度程序和执行程序的 APScheduler 记录器
【发布时间】:2015-08-12 11:09:12
【问题描述】:

在我的应用程序中,我必须使用 apscheduler。我像这样为 BackgroundScheduler 设置记录器:

self.schedlogger = logging.getLogger("gwserver.{}.sched".format(type(self).__name__))
self.schedlogger.setLevel(logging.WARNING)
self.sched = BackgroundScheduler(logger=self.schedlogger)
self.sched.start()

调度程序确实使用了适当的记录器。但是调度程序内部的执行程序仍然使用默认值。 为了克服这个问题,我不得不在上面的代码中添加一行:

self.sched._executors['default']._logger = self.schedlogger

但这对我来说似乎是一个肮脏的黑客。是否可以为调度程序和执行程序设置记录器?

【问题讨论】:

    标签: python-3.x logging apscheduler


    【解决方案1】:

    好像在 BaseExecutor.start 中硬编码:

    def start(self, scheduler, alias):
        """
        Called by the scheduler when the scheduler is being started or when the executor is being added to an already
        running scheduler.
    
        :param apscheduler.schedulers.base.BaseScheduler scheduler: the scheduler that is starting this executor
        :param str|unicode alias: alias of this executor as it was assigned to the scheduler
        """
    
        self._scheduler = scheduler
        self._lock = scheduler._create_lock()
        self._logger = logging.getLogger('apscheduler.executors.%s' % alias)
    

    见:https://bitbucket.org/agronholm/apscheduler/src/c534d51a57638e8a8a51c36d4a4128b89f8beb22/apscheduler/executors/base.py?at=master

    【讨论】:

    • 就我而言,我更喜欢默认情况下,执行程序与调度程序具有相同的记录器。我有十几个记录器,所有日志都写入标准输出,所以我很难通过执行器的所有“INFO”日志读取有用的日志。
    猜你喜欢
    • 2019-11-26
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2015-02-05
    • 2011-03-29
    相关资源
    最近更新 更多