【ハウツー】
NarwhalにはロギングのためのAPIも用意されている。
用途や利用方法はLog4jなど他の言語向けのロギングライブラリと似ているが、ソースコードを見る限りログレベルによるフィルタリングや固定フォーマットで出力するといった程度の機能しか実装されておらず、まだ試験的なAPIであることが伺える。
Loggerは個別にインスタンスを作成して利用することもできるが、以下のようにsystemオブジェクトに定義されているLoggerを利用することもできる。
ロギングAPIの使用例
// 自前でLoggerを作成
var Logger = require("logger").Logger;
var logger = new Logger("test.log");
logger.level = Logger.DEBUG;
logger.debug("This is Narwhal Logging Example!");
// systemオブジェクトのLoggerを使用
system.log.level = Logger.DEBUG;
system.log.debug("This is Narwhal Logging Example!");
出力されるログの例
Sun Jun 28 2009 00:39:45 GMT+0900 (GMT+09:00) [debug] This is Narwhal Logging Example!
Loggerオブジェクトにはログレベルに応じて以下のログ出力用メソッドが用意されており、実行時にどのレベルのログを出力するかはlevelプロパティに設定する。
ログの出力フォーマットを変更するにはLoggerのformatメソッドをオーバーライドすればよい。
ログフォーマットのカスタマイズ
logger.format = function(severity, args){
return "["+Logger.SEV_LABEL[severity].toUpperCase()+"] "
+ new Date()
+Array.prototype.join.apply(args, [" "]).replace(/\n/g, "");
};
http.jsではHTTPによる通信を行い、レスポンスを手軽に取得するためのユーティリテが提供されている。
以下の例にあるように、read関数は引数にURLを取り、レスポンスをByteStringオブジェクトとして返却する。ByteStringを通常の文字列に変換するには引数に文字コードを指定したtoString()メソッドを呼び出せばよい。
HTTP通信の例
var http = require("http");
var byteStr = http.read("http://www.google.co.jp/");
print(byteStr.toString("Windows-31J"));
なお、Narwhalではバイナリデータを扱うためのクラスとして上述のByteStringとByteArrayという2つのクラスが用意されている。
ByteStringは不変オブジェクトでありStringオブジェクトと同様のAPIをサポートする。ByteArrayは可変オブジェクトであり、バイナリデータの編集を行う際に利用できる。それぞれtoByteArray()やtoByteString()といったメソッドで相互変換を行うことができる。
ByteStringとByteArrayの変換
var string = "文字列";
var byteString = string.toByteString("UTF-8");
var byteArray = byteString.toByteArray();
* * *
今回はNarwhalのAPIの中でも利用頻度が高いと思われるものを中心に紹介した。
Narwhalはサーバサイドでの利用を前提としていることを考えると特にファイルシステム関連のAPIは頻繁に利用することになるはずだ。外部コマンドの実行なども簡単に行うことができるため、シェルスクリプトの代替手段としても活用することができるのではないだろうか。
Narwhalにはこの他にも様々なAPIが含まれており、今後はRDBMSとのインタフェースなども整備されていくようだ。現時点ではまだ実験的なプロダクトという感が否めないが、Narwhalを使用して本格的なWebアプリケーションを開発できるようになる日も遠くないかもしれない。
| サーバサイドJavaScriptライブラリ「Narwhal」を使ってみよう [2009/6/26] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
喜多村英梨、待望の1stアルバム「RE;STORY」を7月25日リリース [10:25 5/27] ホビー |
|
心理学のプロのお墨付き。本当に怖いホラー映画とは? [09:30 5/27] ホビー |
|
下田麻美、待望の1stシングルが6月27日発売! ジャケ写を紹介 [09:10 5/27] ホビー |
|
【連載】読む鉄道、観る鉄道 第9回 『サブウェイ・パニック』 - 1970年代のニューヨークと地下鉄の情景を描く [08:00 5/27] ライフ |
|
【連載】発音も聞けちゃう、知って得するidiom情報 第14回 call it a day [08:00 5/27] ライフ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。