slack-winstonでログをSlack通知する
Node.js でloopbackを使ってAPIを書くことをここ最近ずっとしていて、winstonでアプリケーションのログを取る様にする際にした際、ついでに一定レベル以上のログ(エラーログ)の場合は内容をSlackにも通知できないかなと調べると由ななwinstonのプラグインを見つけたので使ってみた。
お約束。npmコマンドでインストール。
$ npm install slack-winston --save
以下の様な形で利用できます。
var winston = require('winston'); var slackWinston = require('slack-winston').Slack; var options = { domain: 'remp', token: '******', channel: '#remp', username: 'REMP API winston', message: '[{{level}}] {{message}}', level: 'warn' } winston.add(slackWinston, options)
なお、token
の部分には、Slackの"Incoming WebHooks"の設定で得られるWebhook URLの末尾の文字列を渡します。
あとは、winstonでログ出力をする要領で記述を行うと
winston.warn("Winston test");
winstonのログは出力されつつ...
Slackの指定したチャンネルにも通知されます。
先の例に書いた通り、メッセージ内容や通知レベルも個別で指定できるので便利。