gecko-dev/js/jsdj/classes/com/netscape/jsdebugging/jslogger/JSLogger.java

188 строки
6.2 KiB
Java

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
package com.netscape.jsdebugging.jslogger;
import netscape.application.*;
import netscape.util.*;
import netscape.jsdebug.*;
import netscape.security.PrivilegeManager;
import com.netscape.jsdebugging.ifcui.Env;
import com.netscape.jsdebugging.ifcui.Log;
/**
* Main entry point and workhorse for JavaScript Logger
*
* @author John Bandhauer
*/
public class JSLogger
extends Application
{
private static final String _logfilename = "log.txt";
private static final boolean _interactive = true;
// boolean options
public static final int LOGGING_ON = 0;
public static final int LOG_DATE = 1;
public static final int LOG_THREADNAME = 2;
public static final int LOG_TO_FILE = 3;
public static final int LOG_TO_CONSOLE = 4;
public static final int TRACE_SCRIPT_LOADING = 5;
public static final int TRACE_EXECUTION = 6;
public static final int TRACE_EACH_LINE = 7;
public static final int TRACE_FUNCTION_CALLS = 8;
public static final int TRACE_DUMP_CALLSTACKS = 9;
public static final int BOOLEAN_LIMIT = 10;
// String options
public static final int EVAL_EXPRESSION = 0;
public static final int LOG_ONLY_SCRIPTS_FROM = 1;
public static final int IGNORE_SCRIPTS_FROM = 2;
public static final int LOG_ONLY_IN_FUNCTION = 3;
public static final int IGNORE_IN_FUNCTION = 4;
public static final int IGNORE_SCRIPT_LOADING_FROM = 5;
public static final int STRING_LIMIT = 6;
/**
* Entry point for running as an Application
*/
public static void main(String[] args)
{
System.out.println("Launching JSLogger...");
new Thread(new JSLogger()).start();
}
/**
* override Application.init()
*/
public void init()
{
Env.Init();
// Log.setEnabled(true);
// Log.setFilename(_logfilename, true);
System.out.println("JSLogger output to : "+Log.getFilename());
// defaults can be changed here...
setBoolOption(LOGGING_ON , true);
setBoolOption(LOG_DATE , true);
setBoolOption(LOG_THREADNAME , false);
setBoolOption(LOG_TO_FILE , false);
setBoolOption(LOG_TO_CONSOLE , true);
setBoolOption(TRACE_SCRIPT_LOADING , true);
setBoolOption(TRACE_EXECUTION , true);
setBoolOption(TRACE_EACH_LINE , true);
setBoolOption(TRACE_FUNCTION_CALLS , true);
setBoolOption(TRACE_DUMP_CALLSTACKS , false);
setStringOption(EVAL_EXPRESSION , null);
setStringOption(LOG_ONLY_SCRIPTS_FROM , null);
setStringOption(IGNORE_SCRIPTS_FROM , null);
setStringOption(LOG_ONLY_IN_FUNCTION , null);
setStringOption(IGNORE_IN_FUNCTION , null);
setStringOption(IGNORE_SCRIPT_LOADING_FROM , null);
Log.setShowThreadName(getBoolOption(LOG_THREADNAME));
Log.setLogToFile(getBoolOption(LOG_TO_FILE));
Log.setLogToConsole(getBoolOption(LOG_TO_CONSOLE));
Log.setShowDate(true);
Log.log(null, "========== session start ==========" );
Log.setShowDate(getBoolOption(LOG_DATE));
try
{
PrivilegeManager.enablePrivilege("Debugger");
_controller = DebugController.getDebugController();
if( null == _controller || 0 == _controller.getNativeContext() )
{
Log.log(null, "FAILED to Init DebugController");
return;
}
_controller.setScriptHook(new MyScriptHook(this));
_controller.setInterruptHook(new MyInterruptHook(this));
_controller.setErrorReporter( new MyErrorReporter(this));
_controller.sendInterrupt();
if( _interactive )
{
_controlPanel = ControlPanel.create(this);
}
}
catch(Throwable t)
{
Log.log(null, "execption thrown " + t );
}
}
private void _update()
{
Log.setShowThreadName(getBoolOption(LOG_THREADNAME));
Log.setLogToFile(getBoolOption(LOG_TO_FILE));
Log.setLogToConsole(getBoolOption(LOG_TO_CONSOLE));
Log.setShowDate(getBoolOption(LOG_DATE));
if( null != _controller )
{
try
{
PrivilegeManager.enablePrivilege("Debugger");
_controller.sendInterrupt();
}
catch(Throwable t)
{
Log.log(null, "execption thrown " + t );
}
}
}
public void setBoolOption(int option, boolean b)
{
_boolOptions[option] = b;
_update();
}
public boolean getBoolOption(int option)
{
return _boolOptions[option];
}
public void setStringOption(int option, String s)
{
_stringOptions[option] = s;
_update();
}
public String getStringOption(int option)
{
return _stringOptions[option];
}
public DebugController getController() {return _controller;}
private DebugController _controller;
private ControlPanel _controlPanel;
private boolean[] _boolOptions = new boolean[BOOLEAN_LIMIT];
private String[] _stringOptions = new String[STRING_LIMIT];
}