1月 122015
<< slackでふぁぼったのをhubotで通知する || hubotのbrainが爆発した >>
debug npm とは
debug npmはexpressやsocket.ioにも使われているログ出力用のライブラリで、ログがカラフルに表示できるし環境変数DEBUGによって出力をフィルタできる。
debug = require('debug')('myapp:main')
debug 'hello'
debug2 = require('debug')('hoge')
debug2 'hi'
% DEBUG=myapp* node app.jsワイルドカードでも指定できる。この例だとmyapp:mainは表示されるけどhogeは表示されない。
ライブラリの中の細かいログを種類分けれるので便利。
debug使えなかったらconsole.logする
基本的にdebugのカラフルな表示で全部出力したいんだけど、どうしても見てほしい情報とかはdebug有効じゃなくても出力したい。(if debug.enabled then debug else console.log) 'hello'debugはfunctionだけどenabledというプロパティがあるので、それを見てdebug出力できない時はconsole.logするとかできる。
debug使えなかったら標準ロガーに渡す
hubot等ではrobot.logger.infoとかrobot.logger.errorがある。でも色んなhubot scriptがログ出してて、どれが何の出力なのかわからなくなるので自分のscriptではなるべくdebug使うようにしてた。
hubotで、なるべくdebugに出したい、無理ならrobot.loggerを使う、という場合こうしてる
debug = require('debug')('hubot-rss-reader:rss-checker')
module.exports = (robot) ->
logger =
info: (msg) ->
return debug msg if debug.enabled
msg = JSON.stringify msg if typeof msg isnt 'string'
robot.logger.info "#{debug.namespace}: #{msg}"
error: (msg) ->
return debug msg if debug.enabled
msg = JSON.stringify msg if typeof msg isnt 'string'
robot.logger.error "#{debug.namespace}: #{msg}"
logger.info "start!!"
logger.error "やばい"