ページへ戻る
印刷
Python/loggingを使ったログの出力
をテンプレートにして作成 ::
NJF Wiki
xpwiki
:Python/loggingを使ったログの出力 をテンプレートにして作成
開始行:
*導入
Pythonでの開発中、コンソールから実行するプログラムの場合...
そんなとき、「logging」を使うと簡単にログをファイルなどに...
*使い方
**基本的な出力
loggingでの簡単な例は以下の通りです。以下の例では「test.l...
import logging
logging.basicConfig(filename='test.log',level=logging.DE...
logging.warning('warning test')
logging.info('info test')
「basicConfig」でファイル名「filename」を指定するとそのフ...
もしファイル名を指定しないと標準出力にログが出力されます。
開発中はコンソールにログを出力、開発が終わったあとでファ...
ログのレベルには以下の物があります。
|レベル|対応メソッド|使いどころ|
|DEBUG|debug|デバック用の情報など|
|INFO|info|予定通りのことが起こった場合など|
|WARNING|warning|問題が起こりそうな場合の警告|
|ERROR|error|一部の機能が実行できないようなエラー|
|CRITICAL|critical|プログラム自体が実行できない重大なエラ...
表の下に行くほど重要なログで、出力されやすくなります。
例えばログのレベルをINFOにしていると、DEBUGレベルであるde...
これ以外に例外発生時のみに使う「exception」やレベルを指定...
logging.log(logging.DEBUG,"デバッグ")
これらのメソッドの引数はマルチバイト文字があってもStr型で...
また
logging.info('info %s',"test")
のように「%」書式を使うこともできます。
**日付と時間の出力
loggingの出力はデフォルトでは
INFO:root:info test
のようになっています。
つまり「ログレベル:階層:メッセージ」です。
階層はloggerの階層だそうですが、あまり使いそうにないので...
実際に使う時には日付と時間がないと、実用にはならないでし...
普段運用しているシステムならもちろん、開発中でもデバッグ...
「日付:メッセージ」とするには「logging.basicConfig」にfor...
logging.basicConfig(filename='test.log',format = "%(asct...
ここで「%(asctime)s」が日付と時間で、「%(message)s」がメ...
出力は
2016-12-14 14:57:24,337 message
といった形となります。
他にログレベルを表示する「%(levelname)s」や関数名を表示す...
**ソースコードの行数を表示する
ログの出力で他によくほしくなるものとしてソースコードの行...
「logging」にその機能はありませんが、「inspect」を使えば...
import logging
import inspect
logging.info('line:%d',inspect.currentframe().f_lineno)
他に関数名やファイル名などもとれますが、前節にご紹介した...
例えば、以下のようにすると、「logTest」関数が実行された場...
def logTest():
logging.info('function:%s',inspect.currentframe().f_...
logging.info('filename:%s',inspect.currentframe().f_...
これを使うと自分用のログ出力関数なども簡単に作れます。
終了行:
*導入
Pythonでの開発中、コンソールから実行するプログラムの場合...
そんなとき、「logging」を使うと簡単にログをファイルなどに...
*使い方
**基本的な出力
loggingでの簡単な例は以下の通りです。以下の例では「test.l...
import logging
logging.basicConfig(filename='test.log',level=logging.DE...
logging.warning('warning test')
logging.info('info test')
「basicConfig」でファイル名「filename」を指定するとそのフ...
もしファイル名を指定しないと標準出力にログが出力されます。
開発中はコンソールにログを出力、開発が終わったあとでファ...
ログのレベルには以下の物があります。
|レベル|対応メソッド|使いどころ|
|DEBUG|debug|デバック用の情報など|
|INFO|info|予定通りのことが起こった場合など|
|WARNING|warning|問題が起こりそうな場合の警告|
|ERROR|error|一部の機能が実行できないようなエラー|
|CRITICAL|critical|プログラム自体が実行できない重大なエラ...
表の下に行くほど重要なログで、出力されやすくなります。
例えばログのレベルをINFOにしていると、DEBUGレベルであるde...
これ以外に例外発生時のみに使う「exception」やレベルを指定...
logging.log(logging.DEBUG,"デバッグ")
これらのメソッドの引数はマルチバイト文字があってもStr型で...
また
logging.info('info %s',"test")
のように「%」書式を使うこともできます。
**日付と時間の出力
loggingの出力はデフォルトでは
INFO:root:info test
のようになっています。
つまり「ログレベル:階層:メッセージ」です。
階層はloggerの階層だそうですが、あまり使いそうにないので...
実際に使う時には日付と時間がないと、実用にはならないでし...
普段運用しているシステムならもちろん、開発中でもデバッグ...
「日付:メッセージ」とするには「logging.basicConfig」にfor...
logging.basicConfig(filename='test.log',format = "%(asct...
ここで「%(asctime)s」が日付と時間で、「%(message)s」がメ...
出力は
2016-12-14 14:57:24,337 message
といった形となります。
他にログレベルを表示する「%(levelname)s」や関数名を表示す...
**ソースコードの行数を表示する
ログの出力で他によくほしくなるものとしてソースコードの行...
「logging」にその機能はありませんが、「inspect」を使えば...
import logging
import inspect
logging.info('line:%d',inspect.currentframe().f_lineno)
他に関数名やファイル名などもとれますが、前節にご紹介した...
例えば、以下のようにすると、「logTest」関数が実行された場...
def logTest():
logging.info('function:%s',inspect.currentframe().f_...
logging.info('filename:%s',inspect.currentframe().f_...
これを使うと自分用のログ出力関数なども簡単に作れます。
ページ名: