Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

intra-martで作成したアプリ(スクリプト開発)のログを簡単に出力する方法。

ログ絡みでもう一個だけ。

intra-martで作成したアプリ(スクリプト開発)でログを簡単に出力するやり方です。
スクリプト開発プログラミングガイドの記載内容ではちょっとだけ理解に時間がかかったのでまとめときます。

1. ログ設定を作成する。

アプリ用のログ設定を作成します。
loggerのnameはソースを配置するフォルダ名と同じにする必要があるので注意してください。
appenderとか指定していないのでログは標準出力(コンソール)に出ます。
リリース時はレベルをoffにすれば出なくなります。
内容は以下のように書きます。作成後は再起動してください。

WEB-INF/conf/log/im_logger_appname.xml

<included>

  <!-- jsspのappnameフォルダ配下のソースで有効になるロガー設定 -->
  <logger name="appname">
    <level value="debug" />
  </logger>

</included>

 

2. コードを書く。

あとはログを出力するコードを書くだけです。
以下の例では結果のオブジェクト(result)をjson形式でデバッグログとして出力しています。
コードはログ設定で指定したnameのフォルダ名(appname)配下のソースに記述する必要があります。

f:id:finalstream:20160502232547p:plain

sandbox.js

     // ロガーを生成
     var logger = Logger.getLogger();

     // なんか処理した結果を想定
     var result =  { error: false, count: 10 };

     // デバッグが有効の場合、resultをjson形式でログに出力
     if(logger.isDebugEnabled()) logger.debug('init() result: {}', ImJson.toJSONString(result));

上記のたった2つを行うだけで以下のようなログがコンソールに出力できます。
Loggerにobjectをそのまま渡しても[object object]と出るだけですので、ImJson.toJSONString()でstringにしています。

[DEBUG] a.sandbox - [] init() result: {"error" : false, "count" : 10}

ロガー名は"a.sandbox"となっていますが、デフォルトではコンソールに出力されるロガー名は指定した長さになるように省略されます。
省略しない場合は"appname.sandbox"で、ファイルに出力した場合は省略されずに出ます。

ロガー名はjavaだと完全修飾クラス名(FQCN)ですが、スクリプト開発だとsrcフォルダ配下のファイルパスを.で区切ったものになるみたいです。

※ちなみに説明で使用しているappnameは開発するアプリの名前に変更してください。