プログラムのデバッグや各種情報を出力するのにprintを使用したり、エラー出力のためにsys.stderr.writeを使った板が、今後djangoなどWEBアプリ開発を念頭に入れて、loggingモジュールを使用できるよう勉強していきたい。
ここのページを参考にすると、なるほどいつもはモジュールをまんまimportしているが、それだとインスタンスを生成せずに使用してしまう可能性もある。なるべく使用するのみをimportするような習慣をつけておいたほうがよさそう。
× import logging ×logger = logging.getLogger(__name__) 〇 from logging import getLogger, StreamHandler, DEBUG, INFO 〇logger = getLogger(?__name__) |
あとはおまじないの様に、下記コードを追加して出力先とレベルを設定するとよいそうだ
logger = getLogger(__name__) handler = StreamHandler() handler.setLevel(DEBEG) logger.setLevel(DEBUG) logger.addHandler(handler) logger.propagate = False # # logger.info( 'inform' ) logger.error( 'error occerd' ) |
setLevelは2か所あるので、引数をDEBUGなどを変数に格納して、一括で変えられるようにしてもいいかもしれない。
勉強がてら、上記修正をblockset.pyに適用して、sys.stderr.write()の部分をlogger.info()に変更。動作自体は特に変化はないが、ちゃんと作ってる感じが良いかも・・・
日に日に、情報コピペの覚書投稿になりつつある・・・・