Ad
2: 2016-12-14 (水) 06:15:56 njf ソース バックアップ No.2 を復元して編集 現: 2017-01-01 (日) 15:15:28 njf ソース 編集
Line 8: Line 8:
**基本的な出力 [#r7dfa599] **基本的な出力 [#r7dfa599]
-loggingでの簡単な例は以下の通りです。+loggingでの簡単な例は以下の通りです。以下の例では「test.log」というファイルに二つのメッセージを出力しています。
 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')
Line 29: Line 29:
|ERROR|error|一部の機能が実行できないようなエラー| |ERROR|error|一部の機能が実行できないようなエラー|
|CRITICAL|critical|プログラム自体が実行できない重大なエラー| |CRITICAL|critical|プログラム自体が実行できない重大なエラー|
 +
 +表の下に行くほど重要なログで、出力されやすくなります。
例えばログのレベルをINFOにしていると、DEBUGレベルであるdebugメソッドのログは出力されず、残りのinfo、worning,error、criticalが出力されます。 例えばログのレベルをINFOにしていると、DEBUGレベルであるdebugメソッドのログは出力されず、残りのinfo、worning,error、criticalが出力されます。
Line 53: Line 55:
実際に使う時には日付と時間がないと、実用にはならないでしょう。 実際に使う時には日付と時間がないと、実用にはならないでしょう。
 +普段運用しているシステムならもちろん、開発中でもデバッグがうまくいかないと思っていたら、実は古いログを見ていたというのは「開発者あるある」の一つです。日付と時間はなるべく早い段階で入れるのがおすすめです。
 +
「日付:メッセージ」とするには「logging.basicConfig」にformatを指定します。 「日付:メッセージ」とするには「logging.basicConfig」にformatを指定します。
Line 58: Line 62:
ここで「%(asctime)s」が日付と時間で、「%(message)s」がメッセージです。 ここで「%(asctime)s」が日付と時間で、「%(message)s」がメッセージです。
 +出力は
 + 2016-12-14 14:57:24,337 message
 +といった形となります。
 +
 +他にログレベルを表示する「%(levelname)s」や関数名を表示する「%(funcName)s」、ファイル名を表示する「%(filename)s」などもよく使います。
**ソースコードの行数を表示する [#u2b92169] **ソースコードの行数を表示する [#u2b92169]
Line 66: Line 75:
 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) 
 + 
 +これを使うと自分用のログ出力関数なども簡単に作れます。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2199, today: 1, yesterday: 0
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF