ファイルへのログ記録と標準出力への印刷のためのロガー設定

PYTHON3 チュートリアル

ファイルへのログ記録と標準出力への印刷のためのロガー設定について解説します。

ロガー設定の概要

Pythonでログをファイルへ記録し、同時に標準出力に印刷するためには、loggingモジュールを使用します。loggingモジュールはPython標準ライブラリに含まれており、柔軟なログ記録機能を提供します。

基本的なロガー設定

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import logging
# ロガーを設定
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# ファイルへのログ記録設定
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)
# 標準出力へのログ印刷設定
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
# ログフォーマット設定
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)
# ロガーにハンドラーを追加
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
# ログメッセージの出力
logger.debug('Debug message')
logger.info('Info message')
import logging # ロガーを設定 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # ファイルへのログ記録設定 file_handler = logging.FileHandler('app.log') file_handler.setLevel(logging.DEBUG) # 標準出力へのログ印刷設定 stream_handler = logging.StreamHandler() stream_handler.setLevel(logging.INFO) # ログフォーマット設定 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter) stream_handler.setFormatter(formatter) # ロガーにハンドラーを追加 logger.addHandler(file_handler) logger.addHandler(stream_handler) # ログメッセージの出力 logger.debug('Debug message') logger.info('Info message')
import logging

# ロガーを設定
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# ファイルへのログ記録設定
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)

# 標準出力へのログ印刷設定
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)

# ログフォーマット設定
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)

# ロガーにハンドラーを追加
logger.addHandler(file_handler)
logger.addHandler(stream_handler)

# ログメッセージの出力
logger.debug('Debug message')
logger.info('Info message')

サンプルコード解説

上記のサンプルコードでは、まずloggingモジュールをインポートし、ロガーを設定します。ファイルへのログ記録と標準出力へのログ印刷のためにそれぞれFileHandlerとStreamHandlerを設定し、適切なログレベルとフォーマットを指定します。

出力結果

上記のコードを実行すると、’app.log’ファイルにDEBUGレベル以上のログが記録され、同時に標準出力にはINFOレベル以上のログが印刷されます。ログメッセージには日時、ロガー名、ログレベル、メッセージが含まれます。

追加のサンプルコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# ログレベルの設定
logger.setLevel(logging.DEBUG)
# ログメッセージの出力
logger.warning('Warning message')
logger.error('Error message')
# ログレベルの設定 logger.setLevel(logging.DEBUG) # ログメッセージの出力 logger.warning('Warning message') logger.error('Error message')
# ログレベルの設定
logger.setLevel(logging.DEBUG)

# ログメッセージの出力
logger.warning('Warning message')
logger.error('Error message')
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 別のファイルへのログ記録設定
file_handler2 = logging.FileHandler('errors.log')
file_handler2.setLevel(logging.ERROR)
file_handler2.setFormatter(formatter)
logger.addHandler(file_handler2)
# エラーメッセージの出力
logger.error('Critical error occurred')
# 別のファイルへのログ記録設定 file_handler2 = logging.FileHandler('errors.log') file_handler2.setLevel(logging.ERROR) file_handler2.setFormatter(formatter) logger.addHandler(file_handler2) # エラーメッセージの出力 logger.error('Critical error occurred')
# 別のファイルへのログ記録設定
file_handler2 = logging.FileHandler('errors.log')
file_handler2.setLevel(logging.ERROR)
file_handler2.setFormatter(formatter)
logger.addHandler(file_handler2)

# エラーメッセージの出力
logger.error('Critical error occurred')

これらのサンプルコードを使って、ファイルへのログ記録と標準出力への印刷を柔軟に設定することができます。適切なログレベルやフォーマットを選択して、ログ管理を効果的に行いましょう。

ファイルへのログ記録と標準出力への印刷のためのロガー設定は、プログラムやシステムの実行中に生成されるログ情報を適切に管理するための仕組みです。ロガー設定には、ログメッセージの出力先を指定することができます。ファイルへのログ記録を行う場合、ログファイルのパスやファイル名を指定して、ログ情報を保存することができます。一方、標準出力への印刷を行う場合、コンソールなどにログ情報を表示することができます。

ロガー設定を行うことで、ログ情報を適切に保存し、必要に応じて確認や分析することができます。また、ログ情報の出力先を柔軟に変更することができるため、運用やトラブルシューティングの際に便利です。ファイルへのログ記録と標準出力への印刷のためのロガー設定は、システムの安定性や可用性を向上させるために重要な役割を果たします。

購読
通知


0 Comments
Inline Feedbacks
View all comments