Когда попадаешь в лог. Я не знаю, почему мой проект django дублирует мое сообщение журнала в другом формате. Где я должен исправить эту проблему с дублированием?

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            'format': '%(levelname)s - %(module)s - %(message)s - %(asctime)s',
        },
        'json': {
            '()': 'sit.providers.libs.logutils.JSONFormatter'
        },
        'custom': {
            'format': '[ %(asctime)s - %(levelname)s ] %(message)s'
        }
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'default',
        },
        'FluentHandler': {
            'level': 'DEBUG',
            'class': 'fluent.handler.FluentHandler',
            'formatter': 'json',
            'tag': 'integration'
        },
        'file': {
            'level': 'ERROR',
            'class': 'sit.providers.libs.logutils.MakeErrorFileHandler',
            'formatter': 'default',
            'filename': LOG_FILE_PATH
        },
        'update_error': {
            'level': 'ERROR',
            'class': 'sit.providers.libs.logutils.MakeUpdateErrorFileHandler',
            'formatter': 'default',
            'filename': LOG_FILE_PATH
        },
        'jenkins': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
            'formatter': 'custom'
        },
    },
    'loggers': {
        '': {
            'handlers': ['console', 'FluentHandler', 'file', 'jenkins'],
            'propagate': True,
            'level': 'INFO',
        },
        'update_error': {
            'handlers': ['console', 'FluentHandler', 'update_error', 'jenkins'],
            'propagate': True,
            'level': 'INFO',
        },
        'raven': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False,
        },
        'sentry.errors': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False,
        },

    }
}

И я использую регистратор как: logger.info ("asdad")

Вывод: INFO - джип - Этот автомобиль не находится в Америке. Пропуск за обслуживание. - 2019-10-04 07: 32: 50,662

[2019-10-04 07: 32: 50,662 - INFO] Этот автомобиль не находится в Америке. Пропуск за обслуживание. Я должен видеть только один из входа в систему выше.

0
Hamdi KAPTAN 4 Окт 2019 в 10:47

2 ответа

Лучший ответ

Это потому, что вы передаете все журналы по умолчанию двум разным обработчикам console и jenkins, которые записывают в sys.stdout, но в другом формате.

  'handlers': ['console', 'FluentHandler', 'file', 'jenkins']

Эта линия является виновником.

0
peeyush113 4 Окт 2019 в 07:57
'': {
    'handlers': ['console', 'FluentHandler', 'file', 'jenkins'],
    'propagate': True,
    'level': 'INFO',
},

Оба обработчика console (который обрабатывает журналы уровня> = INFO) и jenkins (который обрабатывает журналы уровня> = DEBUG) обрабатывают ваши журналы.

0
Dipen Dadhaniya 4 Окт 2019 в 07:58