「Pythonで簡単にロギングを行うには」の版間の差分

提供: tknotebook
移動: 案内検索
2行: 2行:
 
[[メインページ]]>[[コンピュータの部屋#Python]]>[[Python Tips]]
 
[[メインページ]]>[[コンピュータの部屋#Python]]>[[Python Tips]]
  
 +
Python は最近山ほど書籍が出ていますが、プログラミングでは必須な '''ロギング''' に関する情報がなさすぎなので
 +
簡単なまとめを書いてみることにしました。
  
Python でロギングを最も簡単な方法は、ソースの冒頭に以下のように書くやりかた。
+
==最も簡単なやり方==
 +
 
 +
とりあえず
 +
・出力先はコンソールだけ
 +
・適宜出力形式とレベルを変更できるだけでよい
 +
 
 +
の2条件を満たすだけなら恐ろしく簡単です。
 +
 
 +
まずメインモジュールの冒頭に以下の import 文を加えます。 
  
 
  import logging
 
  import logging
  
#ルートロガーの生成、コンソールハンドラを生成
+
そしてメインモジュールのモジュールレベルの先頭に
#ログレベルの変更 WARN → DEBUG
+
logging.basicConfig(level=logging.DEBUG)
+
#モジュール名をロガーの名前にする。
+
logger = logging.getLogger(__name__)
+
  
ログ出力は以下のように書きます。
+
logging.basicConfig(
 +
    level=logging.DEBUG,
 +
    format='%(asctime)s %(levelname)-8s %(module)-18s %(funcName)-10s %(lineno)4s: %(message)s'
 +
)
  
   logger.info("")
+
お置きます。これでお膳立てはおしまいです。
   logger.debug("ああ")
+
 
 +
ログを出力するところには以下のように書きます。
 +
 
 +
   logger.debug("デバッグ")
 +
   logger.info("情報")
  
  
 
出力はコンソールに
 
出力はコンソールに
  
  INFO:__main__:
+
  2018-01-01 18:09:39,992 DEBUG    main_module        <module>    10: デバッグ
  DEBUG:__main__:ああ
+
  2018-01-01 18:09:39,992 INFO    main_module        <module>    11: 情報
 +
 
 +
と出力されます。
 +
 
 +
既にお察しとは思いますが、ログの第一コラムは日付、第2コラムは時刻、第3コラムはログレベル、第4コラムはモジュール名です。
 +
 
 +
第5コラムは関数名かメソッド名が表示されますが、モジュールレベルでログ出力を呼んだ場合 <module> と出力されます。
 +
第6コラムはモジュール内の行番号、最後がログメッセージです。
 +
 
 +
メインモジュール以外でロギングを使うときは、先頭に import logging を書き、logger.debug 等でログ出力を書けばOKです。
  
と出ます。
+
これだけです。簡単ですよね。

2018年1月1日 (月) 09:43時点における版

メインページ>コンピュータの部屋#Python>Python Tips

Python は最近山ほど書籍が出ていますが、プログラミングでは必須な ロギング に関する情報がなさすぎなので 簡単なまとめを書いてみることにしました。

最も簡単なやり方

とりあえず ・出力先はコンソールだけ ・適宜出力形式とレベルを変更できるだけでよい

の2条件を満たすだけなら恐ろしく簡単です。

まずメインモジュールの冒頭に以下の import 文を加えます。 

import logging

そしてメインモジュールのモジュールレベルの先頭に

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s %(levelname)-8s %(module)-18s %(funcName)-10s %(lineno)4s: %(message)s'
)

お置きます。これでお膳立てはおしまいです。

ログを出力するところには以下のように書きます。

 logger.debug("デバッグ")
 logger.info("情報")


出力はコンソールに

2018-01-01 18:09:39,992 DEBUG    main_module        <module>     10: デバッグ
2018-01-01 18:09:39,992 INFO     main_module        <module>     11: 情報

と出力されます。

既にお察しとは思いますが、ログの第一コラムは日付、第2コラムは時刻、第3コラムはログレベル、第4コラムはモジュール名です。

第5コラムは関数名かメソッド名が表示されますが、モジュールレベルでログ出力を呼んだ場合 <module> と出力されます。 第6コラムはモジュール内の行番号、最後がログメッセージです。

メインモジュール以外でロギングを使うときは、先頭に import logging を書き、logger.debug 等でログ出力を書けばOKです。

これだけです。簡単ですよね。