【问题标题】:Why is this logging config duplicating records?为什么此日志记录配置重复记录?
【发布时间】:2014-02-26 02:47:04
【问题描述】:

尝试从 django 记录 SQL 查询,我已经成功(黑桃)。每个日志记录都是重复的。如何让它只记录一次?

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s P%(process)d T%(thread)d %(message)s'
    },
    'simple': {
        'format': '%(levelname)s %(message)s'
    },
},
'loggers': {
    'django.request': {
        'handlers': ['mail-admins'],
        'level': "ERROR",
        'propagate': True,
    },
    '': {
        'level': "ERROR",
        'handlers': ['logfile'],
    },
    'django.db': {
        'handlers': ['logfile'],
        'level': "DEBUG",
    }
},

'handlers': {
    'default':{
        'level': "ERROR",
        'class':'logging.StreamHandler',
    },
    'mail-admins': {
        'level': "ERROR",
        'class': 'django.utils.log.AdminEmailHandler'
    },
   'logfile': {
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(PROJECT_ROOT, 'logs', 'project.log'),
        'maxBytes': 1000000,
        'backupCount': 5,
        'formatter': 'verbose',
    },
}
}

日志行都是这样开始的(每行出现两次,为了清楚起见,其余部分被删除):

DEBUG 2014-02-02 08:52:25,430 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,430 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,432 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,432 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,433 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,433 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,436 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,436 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,439 util P17718 T140208802572032 
DEBUG 2014-02-02 08:52:25,439 util P17718 T140208802572032

【问题讨论】:

标签: python django logging


【解决方案1】:

这是因为节

'': {
    'level': "ERROR",
    'handlers': ['logfile'],
},

这意味着虽然只有ERROR 或更高级别将由根记录器处理,但来自层次结构中较低记录器的消息将传递给根记录器的处理程序。因此,记录到 django.db 记录器的消息将传递给附加到 django 记录器和根记录器(django 记录器的父级)。

有关信息如何在日志系统中流动的更多信息,请参阅this diagram

【讨论】:

  • 'propagate': False, 添加到 django.db 部分并修复了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 2012-03-11
  • 1970-01-01
  • 2018-07-02
  • 2013-09-11
  • 1970-01-01
相关资源
最近更新 更多