Python での stdout へのロギング

Muhammad Maisam Abbas 2023年1月30日
  1. Python の logging.basicConfig() 関数を使用して stdout にログインする
  2. Python の logging.StreamHandler() 関数を使用して stdout にログインする
Python での stdout へのロギング

このチュートリアルでは、Python でログをファイルと stdout に書き込む方法を紹介します。

Python の logging.basicConfig() 関数を使用して stdout にログインする

ログをコンソールウィンドウに出力し、ファイル内にログを書き込む場合は、このプロセスに logging.basicConfig() 関数を使用できます。logging.basicConfig() 関数は、Python でログを記録するためのいくつかの基本的なパラメーターを構成します。この関数の stream パラメーターを使用して、このログをコンソールウィンドウにも出力するように指定できます。残りの構成は、logging.basicConfig() 関数を使用してファイルにログを書き込む場合と同じです。次のコードは、コンソールウィンドウにログを書き込む方法を示しています。

import logging
import sys

# Creating and Configuring Logger

Log_Format = "%(levelname)s %(asctime)s - %(message)s"

logging.basicConfig(
    filename="logfile.log",
    stream=sys.stdout,
    filemode="w",
    format=Log_Format,
    level=logging.ERROR,
)

logger = logging.getLogger()

# Testing our Logger

logger.error("Our First Error Message")

出力:

2021-06-13 05:15:24,093 - root - ERROR - Our First Error Message

Python の logging.StreamHandler() 関数を使用して stdout にログインする

logging.StreamHandler() 関数を使用して、Python のコンソールウィンドウにログを書き込むこともできます。sys.stdoutlogging.StreamHandler() 関数に渡すことで、ログメッセージをコンソールウィンドウに出力できるストリームハンドラーを作成できます。次に、addHandler() 関数を使用して、このストリームハンドラーをロガーオブジェクトに追加できます。次のコードスニペットは、logging.StreamHandler() 関数を使用してログメッセージをコンソールウィンドウに出力する方法を示しています。

import logging
import sys

logger = logging.getLogger()
fileHandler = logging.FileHandler("logfile.log")
streamHandler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
streamHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)
logger.addHandler(streamHandler)
logger.addHandler(fileHandler)
logger.error("This is the first error")

出力:

2021-06-13 05:03:37,510 - root - ERROR - This is the first error

上記のコードの logging.FileHandler() 関数と logging.StreamHandler() 関数を使用して、ログメッセージ This is the first error をファイル logfile.log とコンソールウィンドウに書き込みました。最初に、logging.getLogger() 関数を使用してログを書き込むために使用するロガーオブジェクトを作成しました。次に、ファイルハンドラーfileHandler を作成し、それに logging.FileHandler('logfile.log') を割り当てました。

その後、ストリームハンドラーstreamHandler を作成し、logging.StreamHandler(sys.stdout) を割り当てました。その後、logging.Formatter() 関数を使用して出力をフォーマットするフォーマッターを作成し、setFormatter() 関数を使用して fileHandlerstreamHandler の両方のフォーマッターを設定しました。前の手順に続いて、addHandler() 関数を使用して両方の新しいハンドラーをロガーオブジェクトに追加しました。最後に、logger.error('This is the first error') を使用して、ファイルとコンソールウィンドウにエラーメッセージを書き込みました。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Logging