Udemy講座 Pythonista logging

Python学習【365日チャレンジ!】125日目のマスターU(@Udemy11)です。

Amazonプライムの映画鑑賞も少し休んでいたのですが、5月の末に地上波初の放映があったキングダムを見てから、ストーリーが気になってシリーズを見始めてしまいました。

映画のように2時間完結ではなく、38話もあるので見終えるまでにかなり時間が掛かりそうで、当分の間寝不足が続きそうです。

それでは、今日もPython学習をはじめていきましょう!

昨日の復習

昨日は、ロギングのフォーマッタについて学習しました。

ロギングは、どんな記録をどんな時に記録するのかが重要でした。

日時であったり関数名だったりといろいろなログを記録するために用意されているフォーマットを使って、記録する情報を指定できるのがフォーマッタでした。

フォーマッタについては、こちらの記事をごらんください。

ロガーとは

ロガーとは、ログを記録するなにかです。

ブロガーというと、ブログを書く人ですし、エギンガーというとエギングをする人です。

エギングがわからない人もいると思いますが、ルアーでイカを釣ることがエギングで、ルアーでアジを釣るのがアジングです。

なので、アジングをする人はアジンガーですね。

つまり、上記のルールで考えると、ロガーは、ログを取る人になりますが、人ではないので、ログを記録するプログラムになります。

すでに学習しましたが、ロギングはいろいろな種類のログを取ります。

なので、ログを取る種類に応じてロガーを作る必要が出てくるわけです。

ロガーの設定

loggingを使うとログを記録することができるのですが、ログを取る際にロガーを設定してからログを取るのが通常のログのとり方になります。

ロガーを使うことで、ロガーごとにレベルの変更をしたり、どのモジュールから呼ばれているのかを出力することができます。

import logging


logging.basicConfig(level=logging.INFO)


logger = logging.getLogger(__name__)
logger.info('from main file') 

このコードの出力結果はINFO:__main__:from main fileになります。

loggingで呼び出した場合は__main__の代わりにrootが出力されます。

ロギングの基本は、すべてのログをloggingを使って取得するのではなく、4行目のように、基礎レベルを最初に設定して、あとはロガーを使ってログを取るのがいいとされています。

外部モジュールとしてロガーを使う

ログを取得する際に、メインのファイルにロギングの細かいコードを書いていては、メインのファイルがごちゃごちゃとしてしまいます。

なので、ロギングのためモジュールを作成し、インポートして関数で呼び出すという方法が使われるようです。

main.py

import logging

import testlog


logging.basicConfig(level=logging.INFO)

logger = logging.getLogger(__name__)
logger.info('from main file')

logtest.check_log()

testlog.py

import logging


logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)


def check_log():
    logger.info('from testlog file')
    logger.debug('from testlog debug')

main.pyの出力結果

INFO:__main__:from main file
INFO:testlog:from testlog file
DEBUG:testlog:from testlog debug

main.pyの6行目で基本的なロギングのレベルを指定したあとは、testlog.pyで定義したロガーを関数で呼び出すことができるで、testlog.pyでカスタマイズしたログをlogtest.check_log()で記録しています。

これはロギングの解説なので、他のコードは書かれていませんが、本来は、何かをさせるコードがあり、そのコードを実行するときや実行が完了した時にロガーで定義した関数を実行してログを記録することになります。

パーツ分けが大切

一人で作業をするにしても、MVCモデルで学習したように、パーツで分けたほうがメンテナンスが簡単になります。

同じように、記録するログのカスタマイズも別モジュールで行えば、他のコードをいじってしまってプログラムを壊してしまうリスクを避けることができます。

いつも感じるのですが、酒井さんの講座では、常にチームでプログラム開発を行うことが前提で解説されているので、少し理解するのが難しいところがあります。

大きなプログラムに限らず、アプリ開発は分業が基本のようなので、講座を何度も繰り返して学習し、複数人で開発するためのスキルを身につけましょう!

Udemy講師 酒井さん プログラミング Python

この講座は、全くの初心者にとっては、少し難しいので、途中で挫折してしまうかもしれませんが、本気でPythonを学習したいのなら、超おすすめの講座です。

ぜひ試してみてください。

それでは明日もGood Python!