30
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Hubot のログ情報 (`Robot#logger`) まとめ

Posted at

問題

Hubot のログやロガー (Robot#logger) についての情報が少ない。

公式 (v2.11.2) のドキュメントには、かろうじて利用例が掲載されているだけで、その他の情報はざっと検索した限りでは存在を確認できない。

唯一のドキュメント: https://github.com/github/hubot/blob/v2.11.2/docs/scripting.md#error-handling

# src/scripts/does-not-compute.coffee
module.exports = (robot) ->
  robot.error (err, msg) ->
    robot.logger.error "DOES NOT COMPUTE"

    if msg?
      msg.reply "DOES NOT COMPUTE"

解決策

ソースコードを読み、以下にまとめる。

結論: npm パッケージの log

npm パッケージの log を使っている。その README およびソースコードを読めば良い。

Hubot 2.11.2 での log のバージョンは 1.4.0

Hubot v2.11.2 では log 1.4.0 を使っている。

robot.coffee
Log = require 'log'

robot.coffee
@logger = new Log process.env.HUBOT_LOG_LEVEL or 'info'

package.json
"dependencies": {
  "coffee-script": "1.6.3",
  "optparse": "1.0.4",
  "scoped-http-client": "0.10.0",
  "log": "1.4.0",
  "express": "3.18.1",
  "readline-history": "~1.2.0"
},

ログレベル指定は環境変数 HUBOT_LOG_LEVEL

環境変数 HUBOT_LOG_LEVEL でログレベル (Log のコンストラクタへの引数) を指定できる。デフォルトでは 'info' が使われる。

robot.coffee
@logger = new Log process.env.HUBOT_LOG_LEVEL or 'info'

ログレベルの一覧

指定できるログレベルの一覧は log の README を参照。 syslog に従った値である。

Mirror that of syslog:

0 EMERGENCY system is unusable
1 ALERT action must be taken immediately
2 CRITICAL the system is in critical condition
3 ERROR error condition
4 WARNING warning condition
5 NOTICE a normal but significant condition
6 INFO a purely informational message
7 DEBUG messages to debug an application

ログレベル指定の大文字小文字の区別

ログレベルの指定時に大文字小文字の区別はない。

log.js
var Log = exports = module.exports = function Log(level, stream){
  if ('string' == typeof level) level = exports[level.toUpperCase()];

log.js
exports.EMERGENCY = 0;

ログ出力メソッドの一覧

上記、ログレベルに対応するメソッドと log とが用意されている。

  • Log#log
  • Log#emergency
  • Log#alert
  • Log#critical
  • Log#error
  • Log#warning
  • Log#notice
  • Log#info
  • Log#debug

なので、Hubot からは以下のメソッドを使える。

  • Robot#logger#log
  • Robot#logger#emergency
  • Robot#logger#alert
  • Robot#logger#critical
  • Robot#logger#error
  • Robot#logger#warning
  • Robot#logger#notice
  • Robot#logger#info
  • Robot#logger#debug

参考

30
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?