Ведение журнала внутри функции, вызываемой django-apscheduler

У меня запущен django-специфический планировщик: django-apscheduler и он прекрасно работает как планировщик, он запускает необходимые задания, как требуется, но у меня есть проблема с логированием внутри функции, вызываемой планировщиком. Логгер создается без ошибок, с именем, как определено в settings.py, но выглядит странно, имеет несколько атрибутов, имеет уровень = 0, и ничего не делает с командами ведения журнала.

Часть settings.py


LOGGING = {
    "version": 1,  # the dictConfig format version
    "disable_existing_loggers": False,  # retain the default loggers
    "handlers": {
        "debug_file": {
            "class": "logging.FileHandler",
            "filename": BASE_DIR / "main/logs/debug.log",
            "level": "DEBUG",
            "formatter": "verbose",
        },
        "error_file": {
            "class": "logging.FileHandler",
            "filename": BASE_DIR / "main/logs/errors.log",
            "level": "ERROR",
            "formatter": "verbose",
        },
        "cron_file": {
            "class": "logging.FileHandler",
            "filename": BASE_DIR / "main/logs/cron.log",
            "level": "DEBUG",
            "formatter": "verbose",
        },        
    },
    "loggers": {
        "main.payment_callback": {
            "level": "DEBUG",
            "handlers": ["debug_file", "error_file"],
            "propagate": True,
        "cron": {
            "level": "DEBUG",
            "handlers": ["cron_file"],
            "propagate": True,
        },
      },
    },
    "formatters": {
      "verbose": {
          "format": "{name} {levelname} {asctime} {module} {message}",
          "style": "{",
      },
      "simple": {
          "format": "{levelname} {message}",
          "style": "{",
      },
    },
}

Часть scheduler.py, используемая для добавления задания:

import logging

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ProcessPoolExecutor, ThreadPoolExecutor
from django_apscheduler.jobstores import register_events, register_job

from django.conf import settings
from .cron import manager_subscribtion_updater

# Create scheduler to run in a thread inside the application process
scheduler = BackgroundScheduler(settings.SCHEDULER_CONFIG)

def start():
    if settings.DEBUG:
        # Hook into the apscheduler logger
        logging.basicConfig()
        logging.getLogger('apscheduler').setLevel(logging.DEBUG)

    try:
      scheduler.add_job(manager_subscribtion_updater, "cron", id="manager_subscribtion_updater", day_of_week='0-6', hour=14, minute=51, misfire_grace_time=3, replace_existing=True)
    except Exception as e:
      print(e)

    # Add the scheduled jobs to the Django admin interface
    register_events(scheduler)

    scheduler.start()

Часть вызванной функции manager_subscribtion_updater.py

import logging
from datetime import timedelta, datetime, tzinfo, timezone, date, time
from django.core.exceptions import ObjectDoesNotExist

from .models import (
  Subscription, 
  UserPaymentMetod,
  SubscriptionStatus
)

from .payments import autopayment_manager, new_guaranty_subscribtion_workflow

logger = logging.getLogger('cron')


def manager_subscribtion_updater():
  """ Describtion
  """
  
  logger.debug('Starting manager_subscribtion_updater')

В этой функции объект логгера 'cron' является каким-то полупустым и не работает.

Не могу разобраться, что делать с этим регистратором?

Вернуться на верх