ここのところ、仕事で node.js を使っているので、利用したライブラリなどを少しずつ紹介していきたいと思う。

winston は、ロギングライブラリで、非同期にログを書き出すことができる。

Sails.js は、このライブラリを利用してログをとっているし、このライブラリはnodejitsu社が、flatironというフレームワークのために開発したものということ。作りもしっかりしているのと、拡張もしやすかった。

インストールは以下のとおり。簡単。

npm install winston

最もシンプルな使い方としては以下のように、winston をそのまま使うやりかた

var winston = require('winston');

winston.silly('ばかばかしいこと');
winston.debug('かいはつのこと');
winston.verbose('どうでもいいこと');
winston.info('じょうほう');
winston.warn('やばい');
winston.error('すごくやばい');

実行すると以下の様な感じ

info: じょうほう
warn: やばい
error: すごくやばい

silly が定義してあるのは、npm のデフォルトのログレベルに準拠しているため。
ドキュメントみながら、そんなレベルあったっけな。と。

ファイルに出力したい場合は、これに transpoter を追加してやる必要がある。

var winston = require('winston');

winston.add(winston.transports.File, { filename: 'application.log' });
winston.silly('ばかばかしいこと');
winston.debug('かいはつのこと');
winston.verbose('どうでもいいこと');
winston.info('じょうほう');
winston.warn('やばい');
winston.error('すごくやばい');

{"level":"info","message":"じょうほう","timestamp":"2014-05-13T09:58:46.124Z"}
{"level":"warn","message":"やばい","timestamp":"2014-05-13T09:58:46.125Z"}
{"level":"error","message":"すごくやばい","timestamp":"2014-05-13T09:58:46.126Z"}

JSONで出力したくない場合は以下のようにする。

var winston = require('winston');

winston.add(winston.transports.File, { filename: 'application.log', json: false });
winston.silly('ばかばかしいこと');
winston.debug('かいはつのこと');
winston.verbose('どうでもいいこと');
winston.info('じょうほう');
winston.warn('やばい');
winston.error('すごくやばい');

2014-05-13T10:01:54.273Z - info: じょうほう
2014-05-13T10:01:54.274Z - warn: やばい
2014-05-13T10:01:54.275Z - error: すごくやばい

その他に、日付出さないようにする設定だとか、1ファイルあたりのサイズ・ファイルの上限などを
.add() の第2 引数を設定できたりする。
https://github.com/flatiron/winston/blob/master/docs/transports.md#file-transport

ただ、これだと、logger を別々にできないので以下のように別の
logger を定義することができたりする。

var logger = new (winston.Logger)({
  transports: [
    // 使う出力方法を transports で宣言する
    new (winston.transports.Console)({
      level: 'silly', // level は silly 以上
      colorize: true, // 色付き
      timestamp: true // 時間つき
    })
  ]
});

logger.silly('ばかばかしいこと');
logger.debug('とてもどうでもいいこと');
logger.verbose('どうでもいいこと');
logger.info('じょうほう');
logger.warn('やばい');
logger.error('すごくやばい');

スクリーンショット 2014-05-13 19.21.24

なお、メールでの送信は、
https://github.com/flatiron/winston/blob/master/docs/transports.md#mail-transport
が、公式のドキュメントに書かれているが、メッセージを全件送ってしまうので
大量にエラーが発生した時なんかは、少し困ったことになる可能性がある。

そこで、他の人が作った winston-maller がおすすめで、
こちらは、一定期間に来るメールの量を制限することができる。

Sails.js (0.9.x) で transpoter を追加したい場合は、
config/log.js を以下のように変更すれば良い。

var config = {
  level: 'info', // default log level
  adapters: {
    Mail: {
      module: 'winston-mailer',
      to: 'udon@bucyou.net',
      from: 'udon@bucyou.net'
    }
  }
};

adapters オブジェクト (なぜかドキュメントに書いていない) は、
キーに transporter オブジェクト名、module に require 時に必要な名前を指定できる。
https://github.com/machadogj/node-winston-mailer の場合は、

require('winston-mailer').Mail;

winston.add(winston.transports.Mail, options);

の用に使えます、とあるので、1行目にある Mail をキー名として使えば良い。

この日は、相当迷った。右足の調子が万全とは言えない。しかし、素晴らしい快晴・ほどよい気温であった。インドアにボードゲームをして過ごすか、散歩に出かけるか。友人とボードゲームをするのであれば、千葉行の列車に乗り201・千葉コーワーキングに向かう。散歩に向かうのであれば、反対方向の列車に乗り、つくばエクスプレスに乗るために秋葉原駅に向かう。

平井駅で悩んだ結果、秋葉原方向の列車に乗っていた。テヘ。くれぐれも脚の故障には気をつけよう。

この日は、前回散歩を終了した中妻駅から北へ向かう。少し本気を出せば下館、ゆっくり気ままに行って三妻・下妻ってところだろうか。ところで、中妻・下妻はあるのに、上妻はないのだろうか。一応、上妻小学校というのは地図に乗っていたが、位置関係がいまいち不明だ。東京から見ると、上 -> 中 -> 下 と来て欲しいところだが、そういう位置配置になっていない。であれば、どういう思考で上下が決定されたのか。 謎である。

2014-05-11 11.25.16

Continue reading

前回この旅について公開した時、様々な声をいただいた。応援メッセージもあれば「狂ってる」「バカ?」「なんで?」といったものもあった。「狂ってる」「バカ?」にについては、それはあなたが正常すぎると言わざるおえない。もっと狂ってください。「なんで?」という問いについては、特に答えがない。最初に言ったとおり、せいぜい牛たんが食べたいということだけである。

さて、前回は茨城県の南、守谷市「南守谷駅」に到着するところまでであった。今回は、ここから北へ進んでいきたいと思う。天候は、今にも雨が降り出しそうだが、天気予報曰く、バッとはふらないということで決行することにした。この散歩は、無理しない前提なので雨が酷ければ当然中止だ。家で引きこもって本を読んでいたほうが良い。

前回の反省から、荷物リストに以下が追加された

  • 帽子
  • 登山用レインコート
  • 伸縮杖
  • 水筒
  • タクシー連絡先(緊急用)

タクシー連絡先については、救急車一歩手前の最終手段として利用したい。怪我はしていないが、もう歩けなくなった事態などに利用することにする。伸縮杖・水筒はFacebook上などから頂いたアドバイスである。帽子は、前回直射日光がおもったより厳しかったためである。
まずは、前回歩行を止めた、南守谷駅まで向かう作業から始める。Portal (http://ja.wikipedia.org/wiki/Portal_(%E3%82%B2%E3%83%BC%E3%83%A0) ) のように、遠隔地の白い壁同士を繋げられたらどんなに楽なことかということを考えていた。この日は、前日、友人と酒を飲んでいたため、程よい二日酔いの中でのスタートであった。程よい二日酔いは幸せである。もちろん重度は厳しいが、程よい二日酔いができるっていうのはいいことだ。普段独り飲みが多いので、こういう状況下に置かれること事態を幸福に思いたい。つくばエクスプレス線を利用し、秋葉原駅から守谷駅へ。そこから、南守谷駅へ関東常総線を通じて向かう。この「秋葉原駅から守谷駅」の下りは、茨城編が終了するまでの間、常用することになりそうである。

2014-05-06 09.41.03

今にも雨が降り出しそうな南守谷駅から出発。この南守谷駅付近の道路に「幸福の路 (http://ja.wikipedia.org/wiki/%E5%B9%B8%E7%A6%8F%E3%81%AE%E8%B7%AF ) 」の始点があった。名前のある道は、いろんな妄想ができて良い。どういうヒトが、どういう経緯でつけたんだろうか。だとか。ここを歩いている人は、幸福なんだろうか。であれば良い。

2014-05-06 09.44.09

Continue reading