🐍

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

2022/04/28に公開

はじめに

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

応用編はこちらにになります。

https://chaldene.net/logging-senior

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

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

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

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

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

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

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

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

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

https://chaldene.net/python-book

概要

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

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

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

この説明だけでは理解できないと思うので、この記事を通して理解していってください!

用途

「Logging」の概要を見てきましたが、実際どのような場面で使用されるのでしょうか?

  • プログラム実行中に発生した状態の監視や障害の分析。
  • 特定の動作に関する警告やエラーの警告。

上記のような場面で主に使われます。

例外処理との違い

もしかしたら「例外処理とどう違うの?」と思う人がいるかもしれないです。

なのでここで2つの違いを解説していきます。

まずは用語の整理からしていきましょう。

まずは「例外処理」から。

  • 想定内のエラーの処理。

次に「Logging」。

  • 記録を取る。

こうみるとずいぶん違いますね。

「Logging」はその名の通り「ログ」をとっているイメージですね。

記録を取ることで「エラーが起きそうか。」や「エラーが起きていないか。」、「動作の確認」などを行うことができます。

一方「例外処理」は、「エラーが起きたときにどうするか」を行うだけなので違いがよく分かりますね。

重要度レベル

概要の説明の部分で、「重要度を設定して...」とありました。

ここではその「重要度」について解説していきます。

「重要度」は以下の5つで、下にいくほど重要です。

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL

1つ1つ特徴を見ていきましょう!

DEBUG

問題を診断し、詳細な情報を確認する。

INFO

想定された通りのことが起こったことの確認。

WARNING

想定外のことが起こった、もしくは問題が起こりそうであることを知らせてくれる。

ERROR

より重大な問題により、ソフトウェアがある機能を実行できない。

CRITICAL

プログラム自体が実行を続けられないことを表す、重大なエラー。

以上のような特徴があるので、なんとなく理解しておきましょう。

デフォルトLevel

「Level」とは先ほどの「重要度」のことです。

この「Level」にはデフォルトレベルがあります。

このデフォルトレベル以上の「Level」が出力されます。

このデフォルトレベルは「WARNING」です。

では早速コードで確認してみましょう!

import logging

logging.debug('Debugだよ!')
logging.info('Infoだよ!!')
logging.warning('Warningだよ!!!')
logging.error('Errorだよ!!!!')
logging.critical('Criticalだよ!!!!')

# WARNING:root:Warningだよ!!!
# ERROR:root:Errorだよ!!!
# CRITICAL:root:Criticalだよ!!!

出力を確認してみると「Warning」以上のメッセージが出力されていますね。

では「Level」を変更してみましょう。

logging.basicConfig(level=logging.ERROR)

logging.debug('Debugだよ!')
logging.info('Infoだよ!!')
logging.warning('Warningだよ!!!')
logging.error('Errorだよ!!!!')
logging.critical('Criticalだよ!!!!')

# ERROR:root:Errorだよ!!!
# CRITICAL:root:Criticalだよ!!!

1行目の部分で「Error」にレベルを設定してから出力を確認してみると、しっかり「Error」以上のメッセージが出力されていますね。

続き

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

https://chaldene.net/logging-basis

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

Discussion