Pythonで簡単にログ出力!loggingモジュールの使い方を解説

Pythonでログ出力する方法を、loggingモジュールを使って解説します。

Pythonでログ出力する方法を教えてください。

loggingモジュールを使うことで、簡単にログ出力ができます。

目次

loggingモジュールとは

loggingモジュールは、Pythonの標準ライブラリの一つで、アプリケーションの実行中に発生するイベントを記録するための機能を提供します。ログ出力によって、アプリケーションの動作状況を確認することができます

loggingモジュールを使うことで、以下のような特徴を持っています。

  • ログレベルの設定が可能:
    • ログの重要度に応じて、レベルを設定することができます。Pythonのloggingモジュールでは、デフォルトで以下の5つのログレベルが定義されています。
      • DEBUG: デバッグ情報
      • INFO: 情報
      • WARNING: 警告
      • ERROR: エラー
      • CRITICAL: 致命的なエラー
  • ログの出力先をファイルやコンソールなどに設定できる:
    • ログの出力先を設定することができます。ファイルにログを出力することで、後からログを確認することができます。また、コンソールに出力することで、アプリケーションの動作状況をリアルタイムで確認することができます。
  • ログのフォーマットをカスタマイズできる:
    • ログの出力フォーマットをカスタマイズすることができます。出力されるログの内容や形式を自由に変更できるため、自分が欲しい形式でログを出力することができます。

 loggingモジュールは、ログの出力先をファイルやコンソールに設定したり、ログレベルを設定したりするための機能を提供しています。また、複数のファイルやクラスでログを出力する場合にも、loggingモジュールを使うことで、簡単にログの管理ができます。

loggingモジュールの基本的な使い方

loggingモジュールの基本的な使い方は、以下のようになります。

  1. loggingモジュールをインポートする
import logging
  1. ログの設定を行う

ログの設定を行うには、basicConfig()メソッドを使います。このメソッドを使うことで、ログレベルやログの出力先、ログのフォーマットなどを設定することができます。

logging.basicConfig(level=logging.DEBUG, filename='example.log', format='%(asctime)s %(levelname)s %(message)s')

上記の例では、ログレベルをDEBUGに設定し、ログの出力先をexample.logファイルに設定しています。また、ログのフォーマットを指定して、ログの発生時刻、ログレベル、メッセージを出力するように設定しています。

  1. ログを出力する

ログを出力するには、debug()info()warning()error()critical()メソッドを使います。

logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

上記の例では、debug()info()warning()error()critical()メソッドを使って、それぞれのレベルのログを出力しています。

以上が、loggingモジュールの基本的な使い方になります。ログのレベルや出力先、フォーマットを設定することで、ログの出力をカスタマイズすることができます。また、複数のファイルやクラスでログを出力する場合にも、loggingモジュールを使うことで、簡単にログの管理ができます。

LogRecordオブジェクトについて

ログの出力時には、LogRecordオブジェクトが自動的に作成されます。LogRecordオブジェクトには、ログに関する情報が含まれています。これらの情報は、Loggerオブジェクトによって収集され、LogRecordオブジェクトに格納されます。

LogRecordオブジェクトには、以下のような属性があります。

  • asctime: ログが発生した時刻を表す文字列
  • levelname: ログのレベルを表す文字列
  • message: ログのメッセージを表す文字列
  • name: ロガーの名前を表す文字列
  • filename: ログが発生したファイル名を表す文字列
  • lineno: ログが発生した行番号を表す整数
  • funcName: ログが発生した関数名を表す文字列
  • threadName: ログが発生したスレッド名を表す文字列

これらの属性は、ログの出力先やフォーマットで使用することができます。また、LogRecordオブジェクトは、Loggerオブジェクトによって自動的に作成されるため、通常は直接操作することはありませんが、ログの情報を拡張するためには、カスタムのLogRecordオブジェクトを作成することもできます。

例えば、以下のようにして、カスタムのLogRecordオブジェクトを作成することができます。

import logging

class CustomLogRecord(logging.LogRecord):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.custom_attribute = 'custom value'

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')

logger = logging.getLogger(__name__)

record = CustomLogRecord(
    name=__name__,
    level=logging.DEBUG,
    pathname=__file__,
    lineno=10,
    msg='Custom message'
)

logger.handle(record)

上記の例では、CustomLogRecordクラスを定義して、LogRecordクラスを継承しています。CustomLogRecordクラスには、custom_attributeという属性が追加されており、これはカスタムの情報を表すものです。CustomLogRecordクラスのインスタンスを作成し、Loggerオブジェクトのhandle()メソッドでログを出力しています。このようにして、LogRecordオブジェクトを拡張することで、より詳細なログ情報を取得することができます。

サンプルプログラムを使った解説

以下のサンプルプログラムでは、loggingモジュールを使って、ログを出力する方法を説明します。

import logging

# ログの設定
logging.basicConfig(level=logging.INFO, filename='example.log', format='%(asctime)s %(levelname)s %(message)s')

# ログの出力
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

上記のプログラムでは、basicConfig()メソッドを使って、ログの設定を行っています。ここでは、ログレベルをINFOに設定し、ログの出力先をファイルexample.logに指定しています。また、ログのフォーマットもカスタマイズして、ログの発生時刻、ログレベル、メッセージを出力するようにしています。

その後、debug()info()warning()error()critical()メソッドを使って、ログを出力しています。それぞれのメソッドは、ログのレベルに応じて出力される内容が異なります。

例えば、上記のプログラムでは、ログレベルをINFOに設定しているため、debug()メソッドで出力したdebug messageは、ログに出力されません。一方、info()warning()error()critical()メソッドで出力したメッセージは、ログに出力されます。また、ログの出力先をファイルに設定しているため、ログはファイルexample.logに出力されます。

ログの出力は、以下のようになります。

2022-04-13 11:22:33,111 INFO info message
2022-04-13 11:22:33,111 WARNING warning message
2022-04-13 11:22:33,111 ERROR error message
2022-04-13 11:22:33,111 CRITICAL critical message

上記のログでは、ログの発生時刻、ログレベル、メッセージが出力されています。また、ログのフォーマットをカスタマイズすることで、ログの出力形式を自由に変更することができます。

このように、loggingモジュールを使ってログを出力することで、アプリケーションの動作状況を確認することができます。

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

まとめ

Pythonでログ出力する方法を、loggingモジュールを使って解説しました。

  • loggingモジュールは、Pythonの標準ライブラリの一つで、アプリケーションの実行中に発生するイベントを記録するための機能を提供する。
  • ログレベルの設定が可能で、デフォルトで以下の5つのログレベルが定義されている: DEBUG、INFO、WARNING、ERROR、CRITICAL。
  • ログの出力先をファイルやコンソールなどに設定でき、ログのフォーマットをカスタマイズできる。
  • loggingモジュールを使うことで、アプリケーションの動作状況を確認することができる。
  • ログを出力するには、debug()、info()、warning()、error()、critical()メソッドを使う。
  • LogRecordオブジェクトには、ログの出力時に自動的に作成され、ログに関する情報が含まれている。
  • disable()メソッドを使うことで、あるレベル以下のログを無視することができる。

loggingモジュールを使って、ログを出力することで、アプリケーションの動作状況を確認することができました!

ログ出力は、開発や運用において重要な機能であるため、実装する際には適切な設定を行い、必要な情報を正しく出力することが求められます。

また、ログ出力が必要ない状況下では、disable()メソッドを使って、ログ出力を無効化することで、アプリケーションのパフォーマンスを向上させることができます。ログ出力には注意深く取り組み、アプリケーションの改善に役立てていきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次