使用多个设置文件的 Django 日志记录
Django logging with several settings files
我在使用 Django 日志记录时遇到了两个问题。我有这个 3 层项目结构布局,我已经进一步写下来了。
我的两个问题是:
1) 我只希望每个写入控制台的应用程序有一个唯一的记录器。现在实现此目标的唯一方法是逐个添加应用程序,就像我现在所做的那样。 (我想我会让它与我修改的 'root' 记录器一起工作。你可以在设置文件中看到该行)
2) 在inside 一个设置文件中登录时,控制台显示此警告:
No handlers could be found for logger "sonata.settings.local"
我希望能够登录我的设置文件。
项目结构布局
.
├── docs
├── requirements
├── scripts
└── sonata
├── person
│ └── templatetags
├── registration
├── sonata
│ └── settings
│ ├── base.py
│ ├── heroku.py
│ ├── local.py
| └── production.py
├── static
│ ├── css
│ │ └── images
│ ├── fonts
│ └── js
├── templates
│ ├── personApp
│ └── registrationApp
└── utils
└── templatetags
记录在 base.py(主要设置文件)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler'
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'' : {
'handlers':['console'],
'level':'DEBUG',
},
'sonata.settings.heroku' : {
'handlers':['console'],
'level':'DEBUG',
},
'registration' : {
'handlers':['console'],
'level':'DEBUG',
},
'person' : {
'handlers':['console'],
'level':'DEBUG',
}
},
'root': {
'handlers': ['console'],
'level': 'INFO'
},
}
要激活您的日志记录配置,必须加载您的设置。如果您登录您的设置文件(或由它导入的模块),您的日志配置尚未加载。
...
from django.conf import settings
from django.utils.log import configure_logging
...
设置文件中的语句 LOGGING = ...
实际上并未配置日志系统。日志记录的配置在加载设置后发生。
您可以直接使用 logging
模块在您的设置文件中手动配置日志记录,但我建议您首先评估您是否 真的 需要登录您的设置文件。
我在使用 Django 日志记录时遇到了两个问题。我有这个 3 层项目结构布局,我已经进一步写下来了。
我的两个问题是:
1) 我只希望每个写入控制台的应用程序有一个唯一的记录器。现在实现此目标的唯一方法是逐个添加应用程序,就像我现在所做的那样。 (我想我会让它与我修改的 'root' 记录器一起工作。你可以在设置文件中看到该行)
2) 在inside 一个设置文件中登录时,控制台显示此警告:
No handlers could be found for logger "sonata.settings.local"
我希望能够登录我的设置文件。
项目结构布局
.
├── docs
├── requirements
├── scripts
└── sonata
├── person
│ └── templatetags
├── registration
├── sonata
│ └── settings
│ ├── base.py
│ ├── heroku.py
│ ├── local.py
| └── production.py
├── static
│ ├── css
│ │ └── images
│ ├── fonts
│ └── js
├── templates
│ ├── personApp
│ └── registrationApp
└── utils
└── templatetags
记录在 base.py(主要设置文件)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler'
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'' : {
'handlers':['console'],
'level':'DEBUG',
},
'sonata.settings.heroku' : {
'handlers':['console'],
'level':'DEBUG',
},
'registration' : {
'handlers':['console'],
'level':'DEBUG',
},
'person' : {
'handlers':['console'],
'level':'DEBUG',
}
},
'root': {
'handlers': ['console'],
'level': 'INFO'
},
}
要激活您的日志记录配置,必须加载您的设置。如果您登录您的设置文件(或由它导入的模块),您的日志配置尚未加载。
...
from django.conf import settings
from django.utils.log import configure_logging
...
设置文件中的语句 LOGGING = ...
实际上并未配置日志系统。日志记录的配置在加载设置后发生。
您可以直接使用 logging
模块在您的设置文件中手动配置日志记录,但我建议您首先评估您是否 真的 需要登录您的设置文件。