DjangoでデバッグレベルをDEBUGに変更しようとしました。コードにデバッグメッセージを追加したいためです。効果がないようです。
私のロギング構成:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'simple'
},
},
'loggers': {
'Django.request':{
'handlers': ['console'],
'propagate': False,
'level': 'DEBUG',
},
},
}
コード:
import logging ; logger = logging.getLogger(__name__)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")
logger.warn("THIS ONE IS")
コンソールでの出力:
WARNING:core.handlers:THIS ONE IS
また、設定ファイルでDEBUG = FalseおよびDEBUG = Trueを設定してみました。何か案は?
編集:ロガーでログレベルを直接設定すると、機能します。
import logging ; logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")
出力:
DEBUG:core.handlers:THIS MESSAGE IS NOT SHOWN IN THE LOGS
WARNING:core.handlers:THIS ONE IS
しかし:設定ファイルは完全に無視されているようです。設定の両方のエントリをERRORに戻しても、両方のステートメントalwaysが出力されます。これは正しい動作ですか、それとも何か不足していますか?
追加する必要があります。
'core.handlers': {
'level': 'DEBUG',
'handlers': ['console']
}
Django.request
エントリと並行して、または
'root': {
'level': 'DEBUG',
'handlers': ['console']
}
「ロガー」エントリと並行して。これにより、Django.request
ロガーだけでなく、実際に使用しているロガーにレベルが設定されます。
pdate:すべてのモジュールのメッセージを表示するには、Django.request
の横にエントリを追加して、最上位のモジュールを含めます。 api
、handlers
、core
など。パッケージ/モジュールの階層が何であるかを正確に言っていないので、もっと具体的にすることはできません。
変更して修正しました
LOGGING = {
...
}
に:
logging.config.dictConfig({
...
})
たとえば、すべてのメッセージをコンソールに記録するには:
import logging.config
LOGGING_CONFIG = None
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'console': {
# exact format is not important, this is the minimum information
'format': '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'console',
},
},
'loggers': {
# root logger
'': {
'level': 'DEBUG',
'handlers': ['console'],
},
},
})