Django - Как узнать, какой модуль регистрируется в Django?
Я хочу добавить глобальный пользовательский форматировщик ко всем модулям django, чтобы я мог использовать согласованный файл журнала с Elasticsearch. Как выяснить, какие модули django регистрируют, что я могу изменить во всех их форматерах?
Вот мой лог конфигурации settings.py
, Используя django 2.0.
# NOTE: Copied from DEFAULT_LOGGING and added custom format
# from django.utils.log import DEFAULT_LOGGING
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'},
'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}},
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(module)s %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S'}},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'filters': ['require_debug_true'],
'level': 'INFO'},
'django.server': {
'class': 'logging.StreamHandler',
'formatter': 'django.server',
'level': 'INFO'},
'mail_admins': {
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['require_debug_false'],
'level': 'ERROR'}},
'loggers': {
'api': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False},
'django': {
'handlers': ['django.server', 'mail_admins'],
'level': 'INFO'},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False}},
}
1 ответ
Добавьте свой уникальный тег в строку форматирования, а затем выполните поиск по этим ключевым словам в вашем ELK.
Подобно:
% (asctime)s] %(имя уровня)s [%(имя)s.%(funcName)s:%(lineno)d] MYMODULE [%(модуль)s] %(сообщение)s'
В вышеупомянутом случае я буду искать теги MYMODULE в журнале.