view 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 source

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) { }