簡體   English   中英

為什么在使用 django 時會出現重復的日志信息?

[英]Why getting duplicated log info when using django?

當嘗試獲取日志時。 我不知道為什么我的 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")

output 是:INFO - 吉普車 - 這輛車不在美國。 跳過服務費。 - 2019-10-04 07:32:50,662

[ 2019-10-04 07:32:50,662 - INFO ] 這輛車不在美國。 跳過服務費。 我只需要在上面看到一個登錄。

那是因為您將所有默認日志傳遞給兩個不同的處理程序consolejenkins都寫入sys.stdout但格式不同。

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

這條線是罪魁禍首。

 '': { 'handlers': ['console', 'FluentHandler', 'file', 'jenkins'], 'propagate': True, 'level': 'INFO', },

處理程序console (處理級別 >= INFO 的日志)和jenkins (處理級別 >= DEBUG 的日志)都在處理您的日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM