2021.03.05  

【Python】ログ出力入門

Python    

    目次
  1. 基本的なログ出力方法
  2. ログレベルの設定
  3. ログファイルの出力設定
  4. loggingの子供、logger
  5. loggerのファイル出力設定をするhandler

基本的なログ出力方法

Pythomでログを出力するには以下のように書く。

import logging

logging.critical('メッセージ')
logging.error('メッセージ')
logging.warning('メッセージ')
logging.info('メッセージ')
logging.debug('メッセージ')

実行するとこのようになる。

CRITICAL:root:メッセージ
ERROR:root:メッセージ
WARNING:root:メッセージ

pythonではログレベルを設定することができるが、

デフォルトでは「WARNING」が設定されているため、この例では「WARNING」より重要度の低い「INFO」や「DEBUG」が表示されない。

ログレベルの設定

ログレベルの設定変更を行うには logging.basicConfig を使う。

import logging

logging.basicConfig(level=logging.INFO) # 追加

logging.critical('メッセージ')
logging.error('メッセージ')
logging.warning('メッセージ')
logging.info('メッセージ')
logging.debug('メッセージ')
CRITICAL:root:メッセージ
ERROR:root:メッセージ
WARNING:root:メッセージ
INFO:root:メッセージ # INFOが表示される

logging.basicConfig の引数に level=logging.INFO を設定するとINFOもログとして出力される。
DEBUGまで出力したい場合は引数を level=logging.DEBUG とする。

ログファイルの出力

logging.basicConfig の引数に filename='ファイル名' を設定すると、カレントディレクトリにログファイルを出力する。

また、filename='/パス/パス/ファイル名' とすることでログファイルの出力先を指定できる。
相対パスでも指定可能。

import logging

logging.basicConfig(level=logging.DEBUG, filename='hoge.log') # 追加

logging.critical('メッセージ')
logging.error('メッセージ')
logging.warning('メッセージ')
logging.info('メッセージ')
logging.debug('メッセージ')
hoge.log の出力内容
CRITICAL:root:メッセージ
ERROR:root:メッセージ
WARNING:root:メッセージ
INFO:root:メッセージ
DEBUG:root:メッセージ

loggingの子供、logger

loggingの設定を引き継いだ上で、log出力の内容を変えたい場合がある。

そんな時はloggerを使うと便利。

loggingで設定したログレベルも変更することができる。

import logging

# ロギングの設定。ログレベルはINFO。
logging.basicConfig(level=logging.INFO)

logging.critical('メッセージ')
logging.error('メッセージ')
logging.warning('メッセージ')
logging.info('メッセージ')
logging.debug('メッセージ')

# ロガーの設定
logger = logging.getLogger(__name__) # ※1
logger.setLevel(logging.DEBUG) # ログレベルをDEBUGに変更。
logger.debug('ロガー')
コンソールの出力内容
CRITICAL:root:メッセージ
ERROR:root:メッセージ
WARNING:root:メッセージ
INFO:root:メッセージ
DEBUG:__main__:ロガー # ロガーの出力結果

※1 __name__はmain意外のファイルから実行されると、実行したファイル名が代入される。

loggerのファイル出力設定をするhandler

loggerのログ出力先やそのフォーマットを指定するにはhandlerを使う。

以下はloggerでログ出力を行う例です。

import logging
from logging import StreamHandler, Formatter

# loggerオブジェクトの宣言
logger = logging.getLogger(__name__)

# loggerのログレベル設定
logger.setLevel(logging.DEBUG)

# ログ出力フォーマット設定
handler_format = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# FileHandlerの設定
file_handler = logging.FileHandler('hoge.log')

# FileHandlerにログ出力フォーマット設定
file_handler.setFormatter(handler_format)

# loggerにfile_handlerの設定適用
logger.addHandler(file_handler)

# logを出力する
logger.debug("Hello World!")

hoge.log の出力内容
2021-03-05 22:00:06,689 - __main__ - DEBUG - Hello World!
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信