4: 2016-12-30 (金) 06:01:23 njf |
現: 2017-01-01 (日) 16:15:28 njf |
| | | |
| import logging | | import logging |
| + | |
| logging.basicConfig(filename='test.log',level=logging.DEBUG) | | logging.basicConfig(filename='test.log',level=logging.DEBUG) |
| + | |
| logging.warning('warning test') | | logging.warning('warning test') |
| logging.info('info test') | | logging.info('info test') |
| | | |
| ここで「%(asctime)s」が日付と時間で、「%(message)s」がメッセージです。 | | ここで「%(asctime)s」が日付と時間で、「%(message)s」がメッセージです。 |
| + | 出力は |
| + | 2016-12-14 14:57:24,337 message |
| + | といった形となります。 |
| + | |
| + | 他にログレベルを表示する「%(levelname)s」や関数名を表示する「%(funcName)s」、ファイル名を表示する「%(filename)s」などもよく使います。 |
| | | |
| **ソースコードの行数を表示する [#u2b92169] | | **ソースコードの行数を表示する [#u2b92169] |
| import logging | | import logging |
| import inspect | | import inspect |
| + | |
| logging.info('line:%d',inspect.currentframe().f_lineno) | | logging.info('line:%d',inspect.currentframe().f_lineno) |
| | | |
- | 他に関数名やファイル名などもとれます。 | + | 他に関数名やファイル名などもとれますが、前節にご紹介したようにこれらはloggingにも表示する機能があります。しかし、inspectの便利な機能として、関数の呼び出しスタックをさかのぼる「f_back」をがあります。これを使えば呼び出し元の情報がとれます。 |
- | logging.info('function:%s',inspect.currentframe().f_code.co_name) | + | |
- | logging.info('filename:%s',inspect.currentframe().f_code.co_filename) | + | 例えば、以下のようにすると、「logTest」関数が実行された場所をログ出力できます。 |
| + | def logTest(): |
| + | logging.info('function:%s',inspect.currentframe().f_back.f_code.co_name) |
| + | logging.info('filename:%s',inspect.currentframe().f_back.f_code.co_filename) |
| + | |
| + | これを使うと自分用のログ出力関数なども簡単に作れます。 |