在我的应用程序中,我必须使用 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
但对我来说这看起来像是一个肮脏的 hack。为调度程序和执行程序设置记录器是否有任何正确的方法?
最佳答案
似乎它是在 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)
关于python-3.x - 调度程序和执行程序的 APScheduler 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31963480/