
足跡が大事です
あなたが見知らぬ土地で歩いた結果、道に迷ったとしましょう。
どうやって間違っていない道まで戻るのか、考えてみてください。
あなたが履いている靴、インクが内蔵されています。
そして、歩いた足跡が道路に書かれてあるのです。
手元に地図があれば、足跡と地図を見ながら正しい道順に戻れるでしょう。
これと同じことをプログラムで出来れば、プログラムが思い通りに動かない時に何が問題なのかわかります。
この数値、異常になっているとか、関数の呼び出しを忘れていたとか。
誰でも試行錯誤しながらソースコードを書くので、ロギングはとても重要です。
自分が作ったプログラムを運用していると、必ず想像もしていないエラーが発生します。
このエラーの原因を探るため、ロギングの機能はとても大事になります。
Pythonにはロギング用のライブラリーがあるので、これを利用します。
import logging
ロギングは精密に行いたいので、出力レベルを最大限に変更します。
また、ファイル名も同時に設定しておきます。
logging.basicConfig(filename='Python_log.log', level=logging.DEBUG)
あとは、ロギングを実際に出力します。
logging.debug('%s','Test Message')
文法としては、こんな感じですね。
では、実際にソースコードを書く時、どこにロギングを書くべきでしょうか。
私の経験から言えば、関数の入り口と出口、処理を分岐する場所、その他必要と思える場所です。
実際にプログラミングを運用すると、ログは多いほど解析が楽です。
予想もしないところでエラーが発生し、ログに記録されずに四苦八苦する経験を積むと理解できます。
簡単なソースコードを書いてみます。
実行すると、Python_log.logが作られて、記録されています。
import logging
def TestFunction(Option1st ,Option2nd):
#関数のオプションを記録する
logging.debug('%s %i','Option1st=',Option1st)
logging.debug('%s %i','Option2nd=',Option2nd)
#計算します
CalculationResult=Option1st+Option2nd
#計算結果を記録します
logging.debug('%s %i','CalculationResult=',CalculationResult)
return CalculationResult
def main():
#ロギングの設定
logging.basicConfig(filename='Python_log.log', level=logging.DEBUG)
#サンプル用の関数を呼び出し 、結果を取得
FunctionResult=TestFunction(12,34)
#関数の結果を表示する
print(FunctionResult)
return
#最後にmainを呼び出す
main()