【问题标题】:Why getting duplicated log info when using django?为什么在使用 django 时会得到重复的日志信息?
【发布时间】:2019-10-04 07:47:46
【问题描述】:

当尝试获取日志时。我不知道为什么我的 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")

输出是: 信息 - 吉普车 - 这辆车不在美国。跳过服务费。 - 2019-10-04 07:32:50,662

[ 2019-10-04 07:32:50,662 - INFO ] 这辆车不在美国。跳过服务费。 我只需要在上面看到一个登录。

【问题讨论】:

标签: python django logging


【解决方案1】:

这是因为您将所有默认日志传递给两个不同的处理程序 consolejenkins 都写入 sys.stdout 但格式不同。

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

这条线是罪魁祸首。

【讨论】:

    【解决方案2】:
    '': {
        'handlers': ['console', 'FluentHandler', 'file', 'jenkins'],
        'propagate': True,
        'level': 'INFO',
    },
    

    console(处理级别 >= INFO 的日志)和 jenkins(处理级别 >= DEBUG 的日志)都在处理您的日志。

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 2013-11-24
      • 2018-02-03
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多