diff modules/Logging.jsm @ 0:dada0ac40a8f

initial import
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 02 Dec 2008 20:31:01 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/Logging.jsm	Tue Dec 02 20:31:01 2008 +0900
@@ -0,0 +1,70 @@
+var EXPORTED_SYMBOLS = ["LOG", "WARN", "ERROR"];
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+var gLoggingEnabled = false;
+
+function logMessage(text, level) {
+  var caller = null;
+  try {
+    caller = Components.stack.caller.caller;
+  }
+  catch (e) { }
+
+  var msg = Cc["@mozilla.org/scripterror;1"].
+            createInstance(Ci.nsIScriptError);
+  if (caller) {
+    var filename = caller.filename;
+    var sourceLine = caller.sourceLine;
+    var lineNumber = caller.lineNumber;
+  }
+  else {
+    var filename = "";
+    var sourceLine = "";
+    var lineNumber = 0;
+  }
+  msg.init(text, filename, sourceLine, lineNumber, 0,
+           level, "XUL JavaScript");
+
+  var console = Cc["@mozilla.org/consoleservice;1"].
+                getService(Ci.nsIConsoleService);
+  console.logMessage(msg);
+}
+
+function ERROR(string) {
+  dump("NTT ERROR: " + string + "\n");
+  logMessage("NTT: " + string, Ci.nsIScriptError.errorFlag);
+}
+
+function WARN(string) {
+  dump("NTT WARN : " + string + "\n");
+  logMessage("NTT: " + string, Ci.nsIScriptError.warningFlag);
+}
+
+function LOG(string) {
+  if (gLoggingEnabled) {
+    dump("NTT LOG  : " + string + "\n");
+    
+    var caller = null;
+    try {
+      caller = Components.stack.caller;
+    }
+    catch (e) { }
+    
+    if (caller)
+      string += " (" + caller.filename + ":" + caller.lineNumber + ")";
+
+    var console = Cc["@mozilla.org/consoleservice;1"].
+                  getService(Ci.nsIConsoleService);
+    console.logStringMessage("NTT: " + string);
+  }
+}
+
+var prefs = Cc["@mozilla.org/preferences-service;1"].
+            getService(Ci.nsIPrefBranch);
+try {
+  gLoggingEnabled = prefs.getBoolPref("nightly.logging");
+}
+catch (e) { }