1: 2016-12-14 (水) 05:36:06 njf[6] [7] [8] | 2: 2016-12-14 (水) 06:15:56 njf[6] [9] [10] | ||
---|---|---|---|
Line 7: | Line 7: | ||
*使い方 [#y6ff9a66] | *使い方 [#y6ff9a66] | ||
+ | **基本的な出力 [#r7dfa599] | ||
loggingでの簡単な例は以下の通りです。 | loggingでの簡単な例は以下の通りです。 | ||
Line 22: | Line 23: | ||
ログのレベルには以下の物があります。 | ログのレベルには以下の物があります。 | ||
+ | |レベル|対応メソッド|使いどころ| | ||
+ | |DEBUG|debug|デバック用の情報など| | ||
+ | |INFO|info|予定通りのことが起こった場合など| | ||
+ | |WARNING|warning|問題が起こりそうな場合の警告| | ||
+ | |ERROR|error|一部の機能が実行できないようなエラー| | ||
+ | |CRITICAL|critical|プログラム自体が実行できない重大なエラー| | ||
+ | 例えばログのレベルをINFOにしていると、DEBUGレベルであるdebugメソッドのログは出力されず、残りのinfo、worning,error、criticalが出力されます。 | ||
+ | これ以外に例外発生時のみに使う「exception」やレベルを指定して実行するlogメソッドもあります。 | ||
- | &font(Lime){記事制作中}; | + | logging.log(logging.DEBUG,"デバッグ") |
+ | |||
+ | これらのメソッドの引数はマルチバイト文字があってもStr型でもUnicode型でも出力できます。 | ||
+ | |||
+ | また | ||
+ | logging.info('info %s',"test") | ||
+ | のように「%」書式を使うこともできます。 | ||
+ | |||
+ | **日付と時間の出力 [#pba4f949] | ||
+ | |||
+ | loggingの出力はデフォルトでは | ||
+ | |||
+ | INFO:root:info test | ||
+ | |||
+ | のようになっています。 | ||
+ | つまり「ログレベル:階層:メッセージ」です。 | ||
+ | 階層はloggerの階層だそうですが、あまり使いそうにないので気にしなくても良いと思います。 | ||
+ | |||
+ | 実際に使う時には日付と時間がないと、実用にはならないでしょう。 | ||
+ | 「日付:メッセージ」とするには「logging.basicConfig」にformatを指定します。 | ||
+ | |||
+ | logging.basicConfig(filename='test.log',format = "%(asctime)s:%(message)s",level=logging.DEBUG) | ||
+ | |||
+ | ここで「%(asctime)s」が日付と時間で、「%(message)s」がメッセージです。 | ||
+ | |||
+ | **ソースコードの行数を表示する [#u2b92169] | ||
+ | |||
+ | ログの出力で他によくほしくなるものとしてソースコードの行数があります。 | ||
+ | 「logging」にその機能はありませんが、「inspect」を使えば簡単に表示できます。 | ||
+ | |||
+ | import logging | ||
+ | import inspect | ||
+ | |||
+ | logging.info('line:%d',inspect.currentframe().f_lineno) | ||
+ | |||
+ | 他に関数名やファイル名などもとれます。 | ||
+ | logging.info('function:%s',inspect.currentframe().f_code.co_name) | ||
+ | logging.info('filename:%s',inspect.currentframe().f_code.co_filename) |
(This host) = https://njf.jp