よく使うコードの雛形。 ====
/* JS/WSH・JScriptでロギングをするライブラリ ver 0.1 */ // 標準出力にログ書き出し function log(s){ WScript.Echo(s); } // "文字列".log() String.prototype.log = function(){ log( this ); }; // 標準エラー出力にログ書き出し // リダイレクトされずにコンソールにも表示される。 // バッチの出力をテキストにリダイレクトしていても, // コンソール上でリアルタイムに出力を確認できる。 function err(s){ try{ WScript.StdErr.WriteLine(s); }catch(e){ // GUIで実行された場合は標準出力だけでよい } // 標準出力にも同時に書き出される log(s); } // ベンチ用 function tic(){ tic.startTime = new Date().getTime(); } function tac(){ var ms = new Date().getTime() - tic.startTime; tac.time_span = ms / 1000; } function how_many_seconds(){ // 計測時間が何秒だったかを返す return tac.time_span; }
工夫したところ:
- コマンドの実行時間を簡単にベンチにかけられる。
- Stringを拡張してlogできるようにしたのは面白い。いつも,コードの行頭に戻ってlogのカッコでくくりなおすのは面倒だったから。
alert() と書くために,わざわざ行頭に戻らなくてもすむ方法
http://d.hatena.ne.jp/language_and_engineering/20100829/p1
- 文字列(「str」とか 「"hoge"」 )を書いてから, そのあとで alert() と書きたい。 要するに,文字列変数をタイプした直後,「あ,この変数の内容を表示したいんだった」と気づいて,alert() を書くだけのためにわざわざ行頭に戻って,文字列変数を alert() で囲むのが面倒。
今後の課題:
- ブラウザ上ならconsole.logやalertに自動で切り替えられるようにしたい。また,ログの出力先のtextareaを指定できるとよい。
- ログ出力時に,各行ごとに時刻が出るとよい。
- ログの種類を充実させて,警告,デバッグ,エラーなどの種類が使い分けられるようにしたい。
- 各種ロギングフレームワークを参考に,よいところを取り入れたい。
- logの第二引数とかで,ログ出力を抑制することができるとよい。本番環境ではログが出力されないように,ロギングのレベルや有無を個別に調節可能に。