Python の Logging ライブラリを使用して Log4j を使用する
この記事では、log4j とは何か、それがどのように機能し、なぜそれを使用する必要があるのかについて説明します。 また、logging ライブラリの助けを借りて、Python プログラミング言語内で log4j を使用する方法についても説明します。
Log4j の概要と使用する重要性
log4j は、プログラマーがアプリケーションでデータを logging する際に役立つソフトウェアです。 また、ロギングデータとは、アプリケーションで実行されたアクティビティまたはアクションの日記を付けることを意味します。
さまざまな認証を確認するなど、セキュリティ上の理由から log4j を使用できます。 ただし、デバッグ目的でアプリケーションで発生したことの記録を保持することもできます。
または、アプリケーションが何をしてきたかを一般的に知ること。 たとえば、log4j はセミビルド アプリケーションである Java プログラミング言語のフレームワークです。
同様に、Python では、log4j の代わりに logging モジュールを使用しました。 logging は、アプリケーションのアクションと状態をセカンダリ インターフェイスに記録するプロセスです。 つまり、プログラム アクションをファイルに書き込みますが、どのようにログを開始するのでしょうか?
さて、あなたは logging レベルに慣れる必要があります。 すべての logging ライブラリでは、特定のレベルで情報をロックできます。 知っておく必要がある 5つの主要なログ レベルがあります。
| レベル | 説明 |
|---|---|
debug |
debug レベルは、開発プロセスまたはバグ修正およびトラブルシューティング中に使用されます。 すべての開発者固有の情報は、このレベルの下にあります。 |
info |
info レベルは、デフォルトのユーザーまたはシステムの表示アクションなど、プログラムの重要なデフォルト操作を logging するために使用されます。 |
warning |
warning レベルは、長期的にはエラーになる可能性のある logging イベントに使用されます。 この logging レベルは、エラーの追跡に役立つはずです。 |
error |
error レベルは、エラーを書き留めるために使用されます。エラーは、プログラムの実行に何らかの影響を与える可能性があるミスです。 |
critical |
クリティカル レベルは終末です。 プログラムが停止しているか、深刻な損傷を受けています。 |
Python の logging ライブラリの助けを借りて Log4j を使用する
ここでは単純な基本的なコードを実行するだけで、そのようなロジックはありませんが、ファイル内にすべてのログを書き込む方法など、いくつかの理解を示したいと思います.
コードに飛び込んで、まず logging システムを構成し、basicConfig() メソッドを呼び出し、filename パラメーターを使用してファイル名を渡します。 Python はすべてのログ メッセージをこのファイルに書き込みます。 存在しない場合は、Python が作成します。
次のパラメーターは filemode です。これは、ファイル モードが書き込みモードまたはそこに置くものに追加モードであるかどうかを意味し、デフォルトでは、ファイルは追加モードで作成されます。 次は、asctime、levelname、message などの多くの情報を表す format です。
asctime は基本的に、ログに関してこの特定のテキスト ファイル内にどのような時間を出力しているかを示します。 2 番目のパラメーター値はlevelnameと呼ばれるものです。 このパラメーターは、実行中に発生したエラーの種類を示します。
message は、そのログ メッセージ内に出力しようとしているすべてのメッセージです。 datefmt を使用しています。 このパラメーターは、特定の順序で時刻を出力します。
basicConfig() 関数には別の属性があり、ここ からすべての属性について読むことができます。
import logging
logging.basicConfig(
filename="demo.txt",
filemode="a",
format="%(asctime)s %(levelname)s-%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
これで、パーセンタイルをいくつかの数値と比較し、テキスト ファイル内にいくつかのログを追加する簡単なロジックが作成されました。
for i in range(0, 15):
if i % 2 == 0:
logging.error("Log error message")
elif i % 3 == 0:
logging.warning("Log warning message")
elif i % 5 == 0:
logging.debug("Log debug message")
elif i % 7 == 0:
logging.critical("Log critical message")
else:
logging.info("Log info message")
出力:
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 CRITICAL-Log critical message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
プログラムを実行した後、info および debug ログがテキスト ファイル内に追加されていないことがわかります。これは、デフォルトでは、levelname が error を呼び出し、error レベルが info および debug を表示しないためです。 .
ただし、logging.DEBUG を渡す際に level パラメータを使用することで、他のレベルを使用できます。
level = logging.DEBUG
ここで、demo.txt ファイルを実行して開くと、すべてのログ メッセージが表示されますが、ログ レベルを logging.ERROR に更新すると、error および critical メッセージが表示されます。
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 DEBUG-Log debug message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 CRITICAL-Log critical message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
任意の数をゼロで割るという一般的な問題を考えてみましょう。 この操作を決定するには、try ブロックを使用します。
操作が失敗した場合は、except ブロック内に入り、ログ エラーを表示します。
try:
1 / 0
except:
logging.error("Log zero division error occurs")
出力:
2022-09-02 00:29:48 ERROR-Log zero division error occurs
プロジェクトに取り組んでいるときはいつでも、おそらくこの種の logging メカニズムを書かなければならないので、これはプロジェクトの重要な部分です。
完全な Python コード:
import logging
logging.basicConfig(
filename="demo.txt",
filemode="w",
format="%(asctime)s %(levelname)s-%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
level=logging.DEBUG,
)
# for i in range(0,15):
# if i%2==0:
# logging.error('Log error message')
# elif i%3==0:
# logging.warning('Log warning message')
# elif i%5==0:
# logging.debug('Log debug message')
# elif i%7==0:
# logging.critical('Log critical message')
# else:
# logging.info('Log info message')
try:
1 / 0
except:
logging.error("Log zero division error occurs")
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn