開発者向けログを出力するPandion用プラグイン
最近xmppクライアントのPandionで遊んでいる。
ちょとプラグインを作ってみようとおもってまずは、デバッグをやりやすくするためにログを出力するためのプラグインを作ってみた。
<?xml version="1.0" encoding="UTF-8"?> <!-- Email: snaka.gml@gmail.com Date: november 2009 --> <plugin type="code"> <name>logger</name> <description>Logger</description> <version>1.0</version> <event for="onLoad"> <code language="JScript" parameter="context"> <![CDATA[ logger = (function(){ var self = {}; // private var usersDir = external.globals('usersdir'); var file = external.File(usersDir + "\\pandion.log"); var time = new Date(); function timestamp() { return time.getYear() + '/' + time.getMonth() + '/' + time.getDay() + ' ' + time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds() + '.' + time.getMilliseconds(); } // public self.put = function(text) { file.WriteLine(timestamp() + ' ' + text); }; self.dump = function(obj) { self.put(typeof obj + "::"); if (typeof obj == 'string') { self.put(obj); return; } self.put("{"); try { for (var i in obj) { self.put(" " + i + ":" + obj[i] + ","); } } catch(e) { // do nothing self.put("error?"); } self.put("}"); }; self.close = function() { file.Close(); }; return self; })() logger.put("Logger plugin loaded ..."); ]]> </code> </event> <event for="onDisconnect"> <code language="JScript" parameter="context"> <![CDATA[ // FIXME: Do not work? logger.put("disconnected ..."); logger.close(); ]]> </code> </event> </plugin>
上記を適当に、"logger.pdn"などの名前で保存して、ダブルクリックするとPandionにインストールされると思う。
logger.put()関数
文字列をログファイルに出力する。
logger.dump()関数
オブジェクトのプロパティを捜査してログファイルに出力する。