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 "やばい"