コンソール出力
コード
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('これはデバッグメッセージです')
logging.info('これは情報メッセージです')
logging.warning('これは警告メッセージです')
logging.error('これはエラーメッセージです')
logging.critical('これは致命的なエラーメッセージです')
出力
2024-03-17 18:09:55,797 - DEBUG - これはデバッグメッセージです
2024-03-17 18:09:55,797 - INFO - これは情報メッセージです
2024-03-17 18:09:55,797 - WARNING - これは警告メッセージです
2024-03-17 18:09:55,797 - ERROR - これはエラーメッセージです
2024-03-17 18:09:55,797 - CRITICAL - これは致命的なエラーメッセージです
Pythonスクリプトを書いた際に変数の確認にprintで確認するとコードが長い場合、どの部分のprintか分からなくなるので、loggingモジュールでlinenoオプションを使用して行数を表示するとコードのデバッグ時に便利
コード(linenoオプションを追加)
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(lineno)d - %(message)s')
logging.debug('これはデバッグメッセージです')
logging.info('これは情報メッセージです')
logging.warning('これは警告メッセージです')
logging.error('これはエラーメッセージです')
logging.critical('これは致命的なエラーメッセージです')
出力
2024-03-17 18:10:16,004 - DEBUG - 5 - これはデバッグメッセージです
2024-03-17 18:10:16,004 - INFO - 6 - これは情報メッセージです
2024-03-17 18:10:16,004 - WARNING - 7 - これは警告メッセージです
2024-03-17 18:10:16,004 - ERROR - 8 - これはエラーメッセージです
2024-03-17 18:10:16,004 - CRITICAL - 9 - これは致命的なエラーメッセージです
メッセージの出力が不要になった場合、basicConfigのlevelを変更すればそのレベル以下のメッセージは表示されなくなる。
コード(level=logging.CRITICALnに変更)
import logging
logging.basicConfig(level=logging.CRITICAL, format='%(asctime)s - %(levelname)s - %(lineno)d - %(message)s')
logging.debug('これはデバッグメッセージです')
logging.info('これは情報メッセージです')
logging.warning('これは警告メッセージです')
logging.error('これはエラーメッセージです')
logging.critical('これは致命的なエラーメッセージです')
出力
2024-03-17 18:10:39,807 - CRITICAL - 9 - これは致命的なエラーメッセージです
ログファイル出力
メッセージをログファイルに出力したい場合は、filenameを指定する
※コンソールには出力されない
コード(ファイル出力)
import logging
logging.basicConfig(level=logging.CRITICAL, format='%(asctime)s - %(levelname)s - %(lineno)d - %(message)s', filename='debug.log')
logging.debug('これはデバッグメッセージです')
logging.info('これは情報メッセージです')
logging.warning('これは警告メッセージです')
logging.error('これはエラーメッセージです')
logging.critical('これは致命的なエラーメッセージです')
出力
なし
コンソールとログファイルの両方に出力
ロガーにハンドラーを追加する
コード(コンソールとログファイルの両方に出力)
import logging
logging.basicConfig(level=logging.CRITICAL, format='%(asctime)s - %(levelname)s - %(lineno)d - %(message)s', filename='debug.log')
# コンソールハンドラーの作成
console_handler = logging.StreamHandler()
# フォーマッターの設定
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(lineno)d - %(message)s')
console_handler.setFormatter(formatter)
# ロガーにハンドラーを追加
logging.getLogger().addHandler(console_handler)
logging.debug('これはデバッグメッセージです')
logging.info('これは情報メッセージです')
logging.warning('これは警告メッセージです')
logging.error('これはエラーメッセージです')
logging.critical('これは致命的なエラーメッセージです')
出力
2024-03-17 18:44:01,973 - CRITICAL - 19 - これは致命的なエラーメッセージです