2017-05-19 13 views
2

manage.pyファイル管理コマンドが失敗するたびに管理者に電子メールを送信します。Django:manage.pyでログインすると、誤った例外とトレースバックが発生する

実際には、実際のエラーがImportError: No module named django_inlinecssた場合、次のコード

manage.py

import logging 
logger = logging.getLogger('management_commands') 

try: 
    execute_from_command_line(sys.argv) 
except Exception as e: 
    logger.error('Admin Command Error: %s', ' '.join(sys.argv), 
       exc_info=sys.exc_info()) 
    raise e 

"The translation infrastructure cannot be initialized before the " 

django.core.exceptions.AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.` 

を上げています。ロガーの

私の設定が

LOGGING = { 
    ... 
    'handlers': { 
     ... 
     'mail_admins': { 
      'class': 'django.utils.log.AdminEmailHandler', 
      'level': 'ERROR', 
      'include_html': True 
     } 
    }, 
    'loggers': { 
     ... 
     'management_commands': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True 
     } 
    } 
} 

され、トレースバックの最初の部分は、これは私が関連ログ記録問題がある可能性があります考えてしまった方法です

File "/usr/lib/python2.7/logging/__init__.py", line 1279, in _log 
    self.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1289, in handle 
    self.callHandlers(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1329, in callHandlers 
    hdlr.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 757, in handle 
    self.emit(record) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/log.py", line 128, in emit 
    html_message = reporter.get_traceback_html() if self.include_html else None 
File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 384, in get_traceback_html 
    return t.render(c) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 210, in render 
    return self._render(context) 

です。

なぜPythonロギングライブラリがDjangoを"The translation infrastructure cannot be initialized before the "に昇格させるのか?

答えて

2

"mail_admins"ロガーにhtmlを含めるように設定しました。これにより、djangoの翻訳システムを初期化する必要があるデバッグビューでいくつかのテンプレートレンダリングが実行されます。

# logging config 

LOGGING = { 
    ... 
    'handlers': { 
     ... 
     'mail_admins': { 
      'class': 'django.utils.log.AdminEmailHandler', 
      'level': 'ERROR', 
      'include_html': True 
     }, 
     'command_mail_admins': { 
      'class': 'django.utils.log.AdminEmailHandler', 
      'level': 'ERROR', 
      'include_html': False 
     }, 
    }, 
    'loggers': { 
     ... 
     'management_commands': { 
      'handlers': ['command_mail_admins'], 
      'level': 'ERROR', 
      'propagate': True 
     } 
    } 
} 
+0

ありがとう:ここ

最も簡単な解決策は、(:完全にテストされていない警告)すなわち、「include_html」フラグをせずに別のハンドラを設定し、あなたのロガーのための代わりにこれを使用することです。実際、問題は 'include_html:True'のためでした。それは正しくなく動作します。 – bogtan

関連する問題