今まではprintだけで出力していたが、loggerでログレベルを指定して出力するように変えた。
成果物
GitHub.Uploader.Log.201704211256
開発環境
- Linux Mint 17.3 MATE 32bit
- SQLite 3.8.2
- Python 3.4.3
前回まで
http://ytyaru.hatenablog.com/entry/2017/12/05/000000
コードの違い
before
print('デバッグ出力。') print('ユーザ通知。') print('ユーザ起因のエラー。') print('システム起因のエラー。')
after
web.log.Log.Log().Logger.debug('デバッグ出力。') web.log.Log.Log().Logger.info('ユーザ通知。') web.log.Log.Log().Logger.warning('ユーザ起因のエラー。') web.log.Log.Log().Logger.error('システム起因のエラー。')
実際はerror()
は使わず、raise Exception('システム起因のエラー。')
としている。
./web/log/Log.py
の
気になる点
./web/log
のディレクトリ構成がおかしい- logはweb配下ではない
Log.py
のself.__logger.setLevel(logging.DEBUG)
- 正式版は
self.__logger.setLevel(logging.INFO)
にするlogging.WARNING
以上のレベルにすると通常表示のINFOが表示されなくなってしまう
- 正式版は
web.log.Log.Log().Logger.
が冗長print
はハイライトされたがweb.log.Log.Log().Logger.
はされない- print,例外,subprocess,loggerの使い分けをどうするか
- 例外時はどうするか
git add -n .
などのsubprocess
によるコマンド出力はどうするか- StdOut,StdErrなどの出力先になるのか。不明
- loggerに出力するにはどうすればいいのか
エラー時のパターン
- 例外を発生させる
- 例外発生させないか例外キャッチして
error()
出力してreturn
する
上記の2パターンが考えられる。現状は以下のようにしてあると思う。
- ユーザ起因のエラー(WARNING)なら
warning()
ログ出力し、例外を発生させずreturn
する - WARNING以外はすべて例外発生する
所感
思ったより面倒なことになっているのかもしれない。それぞれの仕組みを知らないから出力を共通化できない。