始める前に、ログ レコードにはログ ツリーまたはロガー階層と呼ばれる階層構造があることに注意してください。階層は複数のレベルで構成され、各レベルはログ情報の異なる重大度を表します。最も一般的なレベルは次のとおりです。
CRITICAL #重大なエラーが発生しました。プログラムは実行を続行できない可能性があります。
ERROR #調査する必要があるエラーが発生しました。
WARNING #予期せぬことが起こったこと、または近い将来の問題を示唆するもの。
INFO #プログラムの実行に関する一般情報。
DEBUG #デバッグ目的の詳細情報。
set_logging.py
という名前の Python モジュールを作成しましょう:
import logging logger = logging.getLogger() def set_logger(): logger.setLevel(logging.INFO) handler = logging.StreamHandler() handler.setLevel(logger_level) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler)
コードを明確にするために、getLogger## を使用してモジュールを作成します。 # 関数 Logger インスタンスを作成し、
setLevel を使用してログ レベル (
DEBUG、
INFO など) を設定します。ロガーの
setLevel メソッドはフィルターのようなもので、ログ メッセージを処理してハンドラーに送信するかどうかを決定します。たとえば、ロガーのレベルを
INFO に設定すると、レベル
DEBUG のメッセージは、設定する最低レベルよりも重大度が低いため、ロガーはハンドラーに送信しません。ロガー。レベル
INFO 以上 (つまり、
WARNING、
ERROR、または
CRITICAL) のログ メッセージのみを処理のためにハンドラーに送信します。
StreamHandler を作成します。デバッグ目的でログ情報を出力するために使用されます。ハンドラーのレベルも設定します。
logger.setLevel(logging.INFO)ロガーのレベルがfile_handler =logging.FileHandler()
file_handler.setLevel(logging.ERROR)
console_handler =logging .StreamHandler()
console_handler.setLevel(logging.WARNING)
INFO に設定されているため、レベル # のログ メッセージを送信する 2 つのプログラムのみを処理します。 ##INFO
以上ですが、各ハンドラーは、指定されたログ レベル以上のメッセージのみを処理します。 メインの例に戻り、フォーマッタを作成してハンドラに追加します。フォーマッタは、タイムスタンプ、ロガー名、ログ レベル、メッセージなどのログ メッセージの形式を指定します。最後に、ロガーにハンドラーを追加します。
コード内で、次のように
set_logger を呼び出す必要があります: <pre class="brush:py;">import logging
from set_logging import set_logger
set_logger()
logger = logging.getLogger()
def roman_number(s: str) -> int:
dic = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
res = 0
pre = None
for char in s:
res += dic.get(char)
if dic.get(pre) and dic.get(pre) < dic.get(char):
res -= 2 * dic.get(pre)
pre = char
logger.info("logging is awesome")
return res
roman_number("IV")</pre>
このコードを実行すると、結果は次のようになります。次は次のとおりです:
#2023-03-04 02:26:57,619 - root - 情報 - ログは素晴らしいです
#レベル3. ログを使用する利点
、INFO 、##など、さまざまな種類のメッセージに対してさまざまなログ レベルを設定する方法を提供します。 #WARNING、
ERROR、および
CRITICAL。これにより、重大度に基づいてログ メッセージをフィルタリングし、優先順位を付けることが容易になります。もちろん、印刷はログ記録と同じ動作を模倣できます。
パフォーマンス
#構成可能性 ロガーは、ログ レベル、ログの宛先、ログ形式などのアプリケーションのログ動作を構成する方法を提供します。ソース コードの変更。これにより、長期にわたるログ動作の管理と維持が容易になります。
柔軟性。ロガーを使用すると、ログ情報を複数の宛先に送信できます。コンソール、ファイル、データベースなど。この柔軟性により、ログの管理と分析が容易になります。
以上がPython でロギング モジュール コードをデバッグする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。