Django Logging
All developers debug errors. それらのエラーの解決には時間がかかります。 いつ、どこでエラーが発生したかを知ることは、ほとんどの場合において役に立ちます。 Python のエラーメッセージはかなり有用だと言えるでしょう。 しかし、これらのメッセージも、複数のファイルを持つプロジェクトについて語るときには、役に立たないものとなってしまいます。 その問題や他の多くの利点が logging にはあります。
Django の開発者として、私たちも logging をマスターすることが重要です。 バックエンド技術には、ロギングを実装するための様々な素晴らしいツールがあります。 Django もまた、様々なロギングフレームワークとモジュールのサポートを提供し ています。 基本的で人気のある logging モジュールを使って実装します。
このチュートリアルでは、logging について学びます。
- ロギングとは
- Python Logging Module
- Logging in Django
学習準備はできています。 9149>
最新の技術動向を把握する
Join DataFlair on Telegram!!!
ロギングとは何か
ロギングとは、ソフトウェア実行時にいくつかのイベントを追跡できる技術またはメディアです。 開発者にとって重要な技術です。 イベントを追跡するのに役立ちます。 ロギングは、開発者のための特別な目のセットのようなものです。 開発者はソフトウェアを作るだけでなく、それを維持する責任もあります。 ロギングは、そのようなメンテナンスの部分を非常によく助けてくれます。 つまり、長いトレースバックの代わりに、より多くのものを得ることができます。 今回は、エラーが発生したときに、システムがどのような状態であったかを見ることができます。 この方法は、エラーを迅速に解決するのに役立ちます。 エラーが発生した場所を知ることができるので、
How does it work?
ログの記録は別のプログラムで処理されます。 そのロギングプログラムは、単なるファイルライタです。 ロガーは特定のイベントをテキスト形式で記録するそうです。 そして、記録された情報はファイルに保存されます。 そのためのファイルをログと呼びます。 ログは、logという拡張子で保存される単純なファイルである。
さて、これはご覧の通り、最もよく使われる実装のひとつに過ぎません。 ただ保存しているだけなので、もっといろいろな方法を考えてみてください。
なるほど、ログを取ることが重要であることはよくわかりましたね。 難しいのでしょうか? いや絶対に違う相棒。 ログ取りは全然難しくない。 設定について少し知っている人なら誰でもこれを使うことができます。
Python プログラマであるあなたは、ここでも特別な機能を手に入れることができます。 それを実現するためのモジュール全体が手に入ったのです。 他の言語については、多くのモジュールがあり、Java には Log4j があり、JavaScript には独自の loglevel があります。 これらもすべて素晴らしいツールです。
Logging Module in Python
The logging module is a built-in Python module. Python 3 にプリインストールされています。 Loggingモジュールは、プログラムの実行に伴って発生するイベントを記録するために使用されます。 それは、任意の数のプログラムに拡張することができ、したがって、ソフトウェアにとって、セットアップと使用が容易です。
Why use logging module?
開発者として、なぜ logging モジュールを使用するのかと尋ねることができます。 logging が行うのは、ファイルへの書き込み、またはコンソールへのプリントだけです。 これらはすべて print ステートメントを使用することによって実現できます。 では、logging モジュールの必要性は何なのでしょうか。 それは正しい質問だ。 その答えは、logging は print ができないことをするモジュールであるということです。 つまり、関数が発生すると、その関数が実行されたという print 文を得ることができます。
print関数はプログラムの一部となり、ソフトウェアが停止した場合、結果を得ることができません。 また、何かが発生し、システムが再起動した場合、コンソールもクリアされます。 では、その時はどうするのか?
- Multithreading execution
- Categorizing Messages via different log levels
- It’s much more flexible and configurable
- Gives a more structured information
The logging module is capable of: The answer to that: logging module are logging. [ロギングは4つの主要部分があります…
1. Loggers
ロガーは、開発者が扱うオブジェクトです。 それらは、呼び出されたときに呼び出される関数として理解することができます。 私たちはプロジェクトファイルの中でロガーを使用します。 したがって、関数が呼び出されると、詳細なレポートが得られます。 ロガーは、複数のレベルの応答を生成することができます。
2. ハンドラ
ハンドラは、情報を発信するオブジェクトである。 新聞配達のようなものだと思えばよい。 その主な仕事は、情報を伝達することである。 これは、ログファイルに情報を書き込むことで実現できます(デフォルトの動作)。 logging モジュールによって提供されるさまざまなハンドラがあります。
私たちは、同じロガーに対して複数のハンドラを簡単にセットアップすることができます。 ログ レコードをメールで送信する SMTP ハンドラもあります。 ハンドラには通常、情報を記録するためのビジネスロジックが含まれています。
3 フォーマッタ
フォーマッタは、データをフォーマットするものです。 ハンドラは、Pythonのデータ型であるため、情報を送信できないことがわかります。
ログはデフォルトでログレコード形式です。 これは、ロギングフレームワークによって事前に定義されたクラスです。 これは、開発者が使用するためのさまざまなメソッドを提供します。 この形式は、直接ネットワークで送信したり、テキストファイルに書き込むことはできません。 それを変換したり、フォーマットしたりするために、フォーマッタが必要になる。
デフォルトでは、フォーマッタはログレコードを文字列に変換します。 この動作は簡単に変更でき、好きなようにカスタマイズすることができます。 このフォーマットは、ハンドラで記述するビジネスロジックに基づくことができます。
4. フィルター
Logging モジュールの最後のピースは、フィルターです。 フィルタはその名の通り、メッセージをフィルタリングします。 渡すメッセージすべてが保存されたり、転送されたりする必要はありません。 あるいは、異なるメッセージのために異なるハンドラがあってもかまいません。
Logger と Handler の両方でフィルタを使用することができます。 また、メッセージレベルも提供されます。 メッセージレベルは次のように定義されています:
DEBUG: すべてが正常に動作しているときに、冗長なシステム情報を提供します。 システムの状態について、より正確な詳細を伝えることができます。 深刻度は10です。
INFO: info はより冗長なシステム情報を生成しませんが、debug と似ています。 一般的に、システムが何を実行しているかの概要を伝えます。 重要度ポイントは 20 です。
WARNING: これは低レベルの問題に関する情報を含んでいます。 これらの問題はシステムを停止させないため、無視することができます。 しかし、これらの問題は解決されることが推奨されます。
重大度ポイントは30です。
ERROR: このメッセージは深刻です。 このエラーには、発生した重大な問題についての情報が含まれます。 この問題はプログラムの動作を停止させている可能性があり、早急な対応が必要です。
重大度ポイントは40です。
CRITICAL: 最も重要なメッセージです。 このメッセージは、問題が原因でシステムが停止した場合に発せられます。
その重要度ポイントは50です。
重要度ポイントは、どのような優先度が与えられるべきかを決定します。 例えば、ログレベルを30に設定したとします。 すると、ロガーはレベルが30以上のときに情報を記録または保存します。 つまり、どのレベルのログを記録したいかを確認すればよいのです。 詳しくは続きの章で説明します。
モジュールをインポートすることで、簡単にロギングを実装することができます。 ビルトインモジュールなので、pipでインストールする必要はありません。
Pythonファイルにこれを書くだけで、loggersが使えます。
Code:
import logginglogging.warning("DataFlair Logging Tutorials")
このコードが生成した出力は、すぐ下の通りです。 見ての通り、ログはコンソールに出力され、 log-level, logger-name, message を持ちます。
Explore a complete tutorial on Python Logging Module
Logging in Django
Django は Python の logging モジュールを使ってログを記録します。 logging モジュールは簡単に設定できます。
Django で logging を使用したい場合、従うべき手順があります。
- 様々なロガー、ハンドラ、フィルタについて settings.py を設定します。
- 必要に応じて、ロガーのコードを views や Django の他のモジュールに含めます。 そうすると、既存のプロジェクトでロギングを利用することができます。
$ django-admin startproject dataflairlogs
これにより、新しいプロジェクトが開始されます。
Configuring Settings
Django にログを含めるには、その設定をする必要があります。 これを行うのはとても簡単です。 ロギングの設定をすることで、次のことを定義します:
- Loggers
- Handlers
- Filters
- Formatters
Django は異なるモジュールで動くので、 dictConfig メソッドを使用します。
他の生のメソッドもありますが、 dictConfig は Django のデフォルトの動作です。
このコードを settings.py にコピーするだけです。
# DataFlair #Logging InformationLOGGING = { 'version': 1, # Version of logging 'disable_existing_loggers': False, #disable logging # Handlers ############################################################# 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': 'dataflair-debug.log', },######################################################################## 'console': { 'class': 'logging.StreamHandler', }, }, # Loggers #################################################################### 'loggers': { 'django': { 'handlers': , 'level': 'DEBUG', 'propagate': True, 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG') }, },}
コードを理解する:
コードは少し大きいですが、非常に簡単に把握することができます。 Django から組み込み変数 LOGGING を取得します。 ロギングのデフォルト値は、この辞書から取得します。 辞書を使って設定を行うので、 dictConfig メソッドと呼ばれます。
- version
- disable_existing_loggers
- handlers
- loggers
一つずつ説明していきましょう。 バージョンキーはスキーマのバージョンを示します。 このキーが値を持つことは重要です。 デフォルトは 1.
次のキーは disable_existing_loggers です。 このキーは、ロガーを無効にしないように Django に指示します。 デフォルトでは、 Django はいくつかの独自のロガーを使っています。 これらのロガーは Django ORM や他の Django の内部部品と接続されています。 このキーはデフォルトで True です。
ロガーが記録する様々なデータベースクエリや関数呼び出しがありま す。 したがって、このキーを True にしないことをお勧めします。
Handlers は 3 番目のキーです。 説明したように、ハンドラはメッセージを処理し、コンソールやファイルなどに渡します。 ハンドラ自体は辞書になっています。 その辞書のキー名がハンドラの名前になります。 loggingモジュールが提供するハンドラにはいろいろなものがあります。 ここでは2つのハンドラを使っています。
1. FileHandler: logger-name – filehandler
FileHandlerは、ファイルにログを保存します。 ご覧のように、dataflair-debug.log というファイル名を指定しました。
レベルでは、ロガーがどのレベルまでログをコミットするのかを定義します。 このファイルは、パーミッションがある場合のみ編集可能です。 StreamHandler: logger name – console
ストリーム ハンドラは、コンソール上のログをストリームします。 これは推奨されない方法です。 コマンドラインでログを表示するまでの文字数に制限があります。 ログはコマンドラインで扱うには大きすぎるため、ファイルハンドラが必要です。
メールハンドラ、AdminEmailHandler などのハンドラもあります。 ロガーもディクショナリー タイプです。 ハンドラと似たようなアーキテクチャを持っています。 しかし、異なる属性や他のプロパティがあります。
Django も一連のロガーを提供します。 django, django.requests.and more など様々なロガーがあります。
Have you checked our latest Django request & response Tutorial
Now, to implement logging, you just need to follow these steps:
Start your server.
$ python manage.py runserver
The moment you hit enter there will be a series of logs and a lot of that.It is a logs of a series of logs, and a log of a lot of that.このように、ロギングを実装するには、以下の手順を踏むだけです。 これは、デフォルトのレベルをデバッグに設定したために起こったことです。 これらのログはすべて、実際にはデフォルトのロガーからのメッセージです。
あなたは、連続したファイルであなたのカスタムロガーを作成することができます。 そうすれば、特定のファイルからログを取得できます。
logs – Django Logging
これがログです。 たくさんのログがありますが、警告以上のレベルのみ通知されます。
概要
ログはかなり重要です。 もしそれが正しく実装されていれば、多くの時間を節約することができます。 一般的に、ロギングはプロジェクトが完了した後に行われます。
Logging モジュールは Django や他の Python プロジェクトでロギングを行うための基本的なものです。 他にも celery や travis などのソリューションがあります。 これらのログハンドラは、ログを簡単に扱えるようにします。 イベントが発生したかどうか、何が原因であったかを検索する作業を簡単にすることができます。