tl;dr
Python スクリプトで logger を使って吐いているログを Slack に通知したいと思ったのでメモ。
memo
色々ある
Slack にメッセージを飛ばすモジュールは色々あるけど、Slack API を生で叩くモジュールが多い印象。logger のハンドラとして利用出来て、且つ、Incoming Webhook で利用出来そうなのが今回試した slack_log_handler だった。
参考
インストール
requirements.txt に以下のように書いてから...
slack_log_handler
インストールを実行。
sudo pip install -r requirements.txt
サンプル
実行例
コンソール上で。ログは標準出力に。
$ export WEBHOOK_URL=https://hooks.slack.com/services/xxxxxx/xxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxx $ python test.py debug 2016-02-21 02:15:50,466 [DEBUG] Debug です $ python test.py info 2016-02-21 02:15:55,799 [INFO] Info です $ python test.py warn 2016-02-21 02:16:15,875 [WARNING] Warn です $ python test.py error 2016-02-21 02:16:20,877 [ERROR] Error です $ python test.py crit 2016-02-21 02:16:26,205 [CRITICAL] Critical です
Slack 同じようにログが飛んでいる。
各ログレベル毎にアイコンが違うのがシャレオツ。
ユーザー名とかアイコンとかどんな風に設定するのか
以下のように Slack Handler を初期化する時に指定するようだ。
slack = SlackLogHandler( os.getenv('WEBHOOK_URL'), username = 'foobar', emojis = { logging.INFO: ':grinning:', logging.WARNING: ':white_frowning_face:', logging.ERROR: ':persevere:', logging.CRITICAL: ':confounded:', } )
以下のように。
さいごに
Handler であること
ログの吐き出し先を標準出力、ファイルや Slack 等統一したインターフェースで放り込めるのがイイ(と思う。)
以上
メモでした。