やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubアップローダにloggerを導入してみた

今まではprintだけで出力していたが、loggerでログレベルを指定して出力するように変えた。

成果物

GitHubGitHub.Uploader.Log.201704211256

開発環境

前回まで

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.pyself.__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以外はすべて例外発生する

所感

思ったより面倒なことになっているのかもしれない。それぞれの仕組みを知らないから出力を共通化できない。