【ハウツー】

サーバサイドJavaScriptライブラリ「Narwhal」のAPIを知る

2 ロギング

    竹添直樹  [2009/07/10]

    ロギング

    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プロパティに設定する。

    • fatal()
    • error()
    • warn()
    • info()
    • debug()

    ログの出力フォーマットを変更するにはLoggerのformatメソッドをオーバーライドすればよい。

    ログフォーマットのカスタマイズ

    logger.format = function(severity, args){
      return "["+Logger.SEV_LABEL[severity].toUpperCase()+"] "
        + new Date()
        +Array.prototype.join.apply(args, [" "]).replace(/\n/g, "");
    };
    

    HTTP通信とバイナリデータ

    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アプリケーションを開発できるようになる日も遠くないかもしれない。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン