🐍

[Python実践]Loggingに挑戦してみよう!《応用編》〜公式ドキュメントをもとに解説〜

2022/04/29に公開

はじめに

今回はPythonの「Logging」の応用について解説していこうと思います!

Logging」の基礎についてはこちらの記事にまとめてあります。

https://chaldene.net/logging

Logging」はPythonの実務などでよく使われるので、Pythonエンジニアを目指している方は是非この記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

Loggingよく見かけるんだけど全くわからない...

Pythonエンジニアを目指して学習中

Pythonスキルのレベルアップをしたい!

このような人のお役に立てれば幸いです。

それでは早速本題に入っていきましょう!

「Logging」はPythonの基礎を理解していないと難しいので、Pythonの基礎を理解していない人は以下を参考に学習してください!

https://chaldene.net/python-book

ロギングとは?

まずは「Logging」がどういったものなのかなどの概要から見ていきましょう。

「Logging」とは以下のようなものです。

  • プログラムが実行されているときに起こったイベントを追跡してくれる。
  • 重要度を設定して、特定のイベントが発生したことをメッセージと共に知らせてくれる。

より詳しくはこちらにまとめてあります。

https://chaldene.net/logging

細かくみてみる

ロギングは「Logger」クラスのインスタンスにメソッドに呼び出して実行されています。

https://docs.python.org/ja/3/howto/logging.html

ロガー」は、どこでイベントのログが取られたかを明らかにしてくれます。

名前の確認

まずはロガーの名前を確認してきましょう。

logger = logging.getLogger(__name__)
print(logger)
# <Logger __main__ (WARNING)>

__main__とWARNINIG が表示されていますね。

__main__は実行されているファイルのことで、WARNINIG はデフォルトの重要度レベルのことです。

__name__と指定することが推奨されています。

明示的に自分で指定

次に明示的に「ロガー」の名前を指定してみましょう。

logger = logging.getLogger("かるでね")
print(logger)
# <Logger かるでね (WARNING)>

自分が指定した通り、かるでねと出力されていますね。

重要度レベル変更してみる

では次に重要度レベルを変更してみましょう。

import logging

logging.basicConfig(level=logging.ERROR)

logger = logging.getLogger(__name__)
print(logger)
# <Logger __main__ (ERROR)>

3行目でERRORに設定してみると、出力部分がWARNINIGからERRORに変わってますね。

他のファイルで実行されたロガー名を確認

名前が__main__だとよくわからないので、別ファイルのロガー名を確認してみましょう。

まずはtest.pyに以下を記入してください。

import logging

def log_info():
    logger = logging.getLogger(__name__)
    return logger

次にmain.pyに以下を記入してください。

import logging
import test

logger = logging.getLogger(__name__)
print(logger)
print(test.log_info())

# <Logger __main__ (WARNING)>
# <Logger test (WARNING)>

main.pyのロガーは__main__と表示されています。(ファイル名がmain.pyだからではなく、「実行されているファイル」という意味です。

test.pyの方はtestと表示されています。

これで__name__が実行されているファイル名を参照していることがわかります。

root

rootとはロガー階層の一番上に位置しているものです。

ブログ.png

こんな感じのイメージですね。

ちなみに普通にロギングで出力されたメッセージを見るとひっそり出力されているのが確認できます。

import logging

logging.warning('Warningだよ!!!')
# WARNING:root:Warningだよ!!!

真ん中にrootというのがしっかりありますね。

続き

これより先は以下の記事にまとめています。

https://chaldene.net/logging-senior

より詳しくLoggingについて学ぶことができるので、興味がある方はぜひ!
(もちろん無料です!)

Discussion