2017-06-25 9 views
0

廃止の警告を記録するようにDjangoのログを設定しようとしています。私は通常、このようなフォーマッタを持たないか、コンソールに出力します。それはテストするだけで動作しないことを示しています。ここでDjangoでの警告の記録:何も返さないフィルタ

は私のコードです:

def is_deprecated(record): 
    if record.exc_info: 
     exc_type, exc_value = record.exc_info[:2] 
     print(exc_value) 
     if isinstance(exc_value, DeprecationWarning) or isinstance(exc_value, PendingDeprecationWarning): 
      return True 
    return False 

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'stuff': { 
      'format': 'This works!' 
     } 
    }, 
    'filters': { 
     'is_deprecated': { 
      '()': 'django.utils.log.CallbackFilter', 
      'callback': is_deprecated, 
     }, 
    }, 
    'handlers': { 
     'console': { 
      'filters': ['is_deprecated'], 
      'class': 'logging.StreamHandler', 
      'formatter': 'stuff', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console'], 
      'level': 'INFO', 
     }, 
    }, 
} 

それは出力 "これは動作します!" 必要がありますしかし、それは非推奨の警告をヒットしたときには表示されません。私は、だから私は、通常のDjangoの警告を見ることができます

パイソン-Wd

にこれらのアラートでのpythonを実行していますが、私はそれらを検出するためにロガーを取得することはできません。どうやら

答えて

0

、あなたはそれが警告が表示されますが、例外として扱われていない-Wd引数を使用します(Djangoのログのみが例外を処理する)あなたはsettings.pyのようないくつかの最初の部分(、initの中warnings.simplefilter('error')を使用して、この動作を変更することができますの.py、manage.py、等)又はpython -W errorコマンド

基準を使用します。その上https://docs.python.org/2/library/warnings.html#the-warnings-filter

+1

をsimplefilter等価例外が発生します。これを望んでいない場合は、Djangoのログを静かに表示してこの警告に従うことができます https://stackoverflow.com/questions/40752766/how-to-log-python-warnings-in-a-django-log -ファイル – Chaos

関連する問題