Django ログモジュールのロギング設定の詳細説明
プログラム開発においてログは欠かせません。ログを通じて、どこにエラーがあるのか、どのような異常があるのかを分析することができます。これは実稼働環境で非常に役立ちます。 Java 開発では、通常、log4j や logback などのサードパーティ コンポーネントが使用されます。以下の記事では主に Django ログモジュールのロギングに関する情報を紹介していますので、必要な方は参考にしてください。
はじめに
Django はログ出力情報に関して非常に充実しており、リクエスト情報、設定構成、トラックバック情報がすべて利用可能であり、デバッグには十分です。ただし、オンライン環境では、ユーザーがこの情報を見ることを許可されている場合、非常に安全ではありません (コードが公開される)。したがって、オンラインでのデバッグをオフにする必要がありますが、デバッグ情報を破棄するにはログモジュールを使用する必要があります。
ロギング モジュールは実際には Python モジュールであり、Django でローカライズされたサポートが多数あります。
ロガーについて
まず第一に、ロギングにはフォーマッタ、フィルター、プロセッサ ハンドラー、ログ インスタンス ロガーの 4 つの主要なものがあることを理解する必要があります。
加工プロセス
formatter logger ----> handler ----------------> files, emails filter
プロセスはこんな感じです。まずはコードから。取得するのはロガー インスタンスであり、このインスタンスを使用して情報を記録します。
# import the logging library import logging # Get an instance of a logger logger = logging.getLogger('django') def my_view(request, arg1, arg): ... if bad_mojo: # Log an error message logger.error('Something went wrong!')
その後、django という名前のロガーが、対応するハンドラーに情報を渡します。ハンドラーは、フォーマッタとフィルターを使用して情報を処理し、ログを送信します (ファイル、データベースに保存するか、ログを送信します)。 Eメール)。
一般に、ハンドラーは、send_email、error_file などの処理を担当することができ、ハンドラーはロガーで再利用できます。たとえば、Django プロセッサは send_email と error_file という 2 つのプロセッサを使用し、リクエスト プロセッサは error_file と info_file という 2 つのプロセッサを使用します。Logger とハンドラは多対多の関係として理解できます。
設定方法
Pythonでは、.conf、.iniなどの複数の形式でロギングを設定できます。
Django では、ログ設定を設定に書き込みます。対応する構成と説明は次のとおりです(参考のみ)。
#管理员邮箱 ADMINS = ( ('laixintao','*******@163.com'), ) #非空链接,却发生404错误,发送通知MANAGERS SEND_BROKEN_LINK_EMAILS = True MANAGERS = ADMINS #Email设置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST= 'smtp.163.com'#QQ邮箱SMTP服务器(邮箱需要开通SMTP服务) EMAIL_PORT= 25 #QQ邮箱SMTP服务端口 EMAIL_HOST_USER = '**********@163.com' #我的邮箱帐号 EMAIL_HOST_PASSWORD = '**************' #授权码 EMAIL_SUBJECT_PREFIX = 'website' #为邮件标题的前缀,默认是'[django]' EMAIL_USE_TLS = True #开启安全链接 DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER #设置发件人 #logging日志配置 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': {#日志格式 'standard': { 'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} }, 'filters': {#过滤器 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse', } }, 'handlers': {#处理器 'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, 'mail_admins': {#发送邮件通知管理员 'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'],# 仅当 DEBUG = False 时才发送邮件 'include_html': True, }, 'debug': {#记录到日志文件(需要创建对应的目录,否则会出错) 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': os.path.join(BASE_DIR, "log",'debug.log'),#日志输出文件 'maxBytes':1024*1024*5,#文件大小 'backupCount': 5,#备份份数 'formatter':'standard',#使用哪种formatters日志格式 }, 'console':{#输出到控制台 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'standard', }, }, 'loggers': {#logging管理器 'django': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': False }, 'django.request': { 'handlers': ['debug','mail_admins'], 'level': 'ERROR', 'propagate': True, }, # 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件 'django.security.DisallowedHost': { 'handlers': ['null'], 'propagate': False, }, } }
上記の設定ファイルには、3 つのログ プロセッサがあります。それらは次のとおりです:
'django.request': Django のリクエストはエラーが発生すると自動的に記録し、デバッグを使用して情報をファイルに記録し、mail_admins を使用して情報を電子メールで管理者に送信します。ここのメール機能は素晴らしいです!これはプレーン テキスト メッセージではなく、ブラウザで表示されるエラー ページとまったく同じ HTML ファイルです。メール機能を正常に使用するには、私と同様に上記のメール送信者情報を設定する必要があります。 NetEase に直接行ってメール アドレスを申請しました。次の 3 つの点に特に注意してください。 1. 必ず電子メール サービス プロバイダーにアクセスして SMTP サービスを有効にしてください。 2. 異なる電子メール サービス プロバイダーでは、いくつかの特別な設定がある場合があります。たとえば、NetEase は次のようなクライアント認証コードを提供します。 Webページへのログインパスワードではありません。 3. サービスプロバイダーが送信頻度に制限を設けていないか注意してください。
「django」: コンソールプロセッサを使用して情報を出力します。このプロセッサは開発中に使用できます (何? 印刷? 低すぎます!)
最後のプロセッサのコメントを参照してください。
最後に、ログパスの応答に許可を与えることを忘れないでください。たとえば、Apache2 サーバーの場合は、www-data 書き込み許可を与える必要があります:
sudo chown -R [yourname]:www-data [log] sudo chmod -R g+s [log]
Django ログ モジュールのロギング設定の詳細については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

データベースクエリにTKMYBATISを使用する場合、クエリ条件を構築するためにエンティティクラスの変数名を優雅に取得する方法は一般的な問題です。この記事はピン留めします...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。
