Как использовать Django Logging с Heroku Papertrail & Waitress

Итак, я пытался заставить протоколирование работать с Django 1.9.5/Python 3 на сервере Waitress, работающем на Heroku, но пока не смог. Это конфигурация, которую я добавил в настройки Django моего производственного сервера:

settings.py

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "handlers": {
        "console": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "stream": sys.stdout

        },
    },
    "loggers": {
        "django": {
            "handlers": ["console"],
        }
    }
}

views.py

logger = logging.getLogger(__name__)

class IndexView(View):
    def get(self, request):
        logger.info('This is a test INFO error')
        return render(request, 'index.html', {})

Есть идеи, почему это ничего не выводит в мой Heroku Papertrail?

1 ответ

Решение

Ваша конфигурация регистрации настроена так, чтобы захватывать все журналы под django пространство имен, но в вашем views.pyвы используете другое пространство имен, установленное с помощью:

logger = logging.getLogger(__name__) # __name__ resolves to the name of your app.

Вам нужно добавить свое приложение (скажем, оно называется myapp) к вашей конфигурации регистрации:

"loggers": {
    "django": {
        "handlers": ["console"],
    },
    "myapp": {
        "handlers": ["console"],
    }
}
Другие вопросы по тегам