Python
Heroku
python3

Herokuにロギング

More than 1 year has passed since last update.

やりたいこと

プロセスが実行してる関数を確認できるログを吐きたい。

経緯

前回作った定期実行プログラム、更新情報がなかった場合はツイートしないのでちゃんと動いてるか不安になる。
heroic logsでログを確認したい!
今後他の処理も追加して定期実行したくなるたぶん。
→どの関数が実行したかもわかるようロギング!

ロギング

修正前

clock.py
sche = BlockingScheduler()
@sche.scheduled_job('interval',minutes=30)
def job1():
    pass() #実行したい処理

デコレートしてscheduled_jobに渡してるから
その前にデコレートしてログでサンド。
ちなHerokuではprint関数で普通に標準出力してやるとログとして見れる。

修正後

clock.py
def wrapLog(func):
    def _wrapLog():
        print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"), "start", func.__name__)
        func()
        print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"), "end", func.__name__ )
    return _wrapLog

sche = BlockingScheduler()
@sche.scheduled_job('interval',minutes=30)
@wrapLog
def job1():
    pass() #実行したい処理

ログ確認

$ heroic logs
2017-10-10T05:16:50.058427+00:00 app[clock.1]: 2017/10/10 14:16:50 start job1
2017-10-10T05:16:51.400087+00:00 app[clock.1]: 2017/10/10 14:16:51 end job1

終わりに

今回の記事に全く関係ないけど、vscodeのgit周りの設定と操作を覚えたら
修正→ステージング→ローカルリポジトリにコミット→herokuにプッシュ→デプロイ
の工程がvscode上で流れるように出来た感動。デプロイは実質herokuがやってるけども笑