📄 xabstractlogger.java
字号:
/****************************************************************
* XBrowser - eXtended web Browser *
* *
* Copyright (c) 2000-2001 Armond Avanes *
* Refer to ReadMe & License files for more information *
* *
* *
* By: Armond Avanes *
* Armond555@yahoo.com & Armond333@yahoo.com *
* http://xbrowser.sourceforge.net/ *
*****************************************************************/
package xbrowser.logger;
import java.io.*;
import java.util.*;
import xbrowser.*;
public abstract class XAbstractLogger implements XLogger
{
public XAbstractLogger()
{
this(XProjectConstants.LOG_MODE_VERBOSE);
}
public XAbstractLogger(int log_mode)
{
setLogMode( new XLogMode(log_mode) );
}
protected void setStreams(PrintStream ps_out, PrintStream ps_err)
{
out = ps_out;
err = ps_err;
// Log some stuff
String[] props = {
"java.version", "java.vendor", "java.compiler", "os.name",
"os.version", "os.arch", "user.home"
};
if( !logMode.isOff() )
{
logImpl(XRepository.getLogger(), "When reporting bugs, please include the following information:", MESSAGE, out);
logImpl(XRepository.getLogger(), XProjectConstants.PRODUCT_NAME+" version="+XProjectConstants.PRODUCT_VERSION, MESSAGE, out);
for( int i=0; i<props.length; i++)
logImpl(XRepository.getLogger(), props[i] + "=" + System.getProperty(props[i]), MESSAGE, out);
}
}
public void setLogMode(XLogMode log_mode)
{
logMode = log_mode;
}
public void addLogException(String log_e, XLogMode log_mode)
{
if( !logExceptions_Modes.containsKey(log_e) )
logExceptions_Modes.put(log_e, log_mode);
}
public void removeLogException(String log_e)
{
logExceptions_Modes.remove(log_e);
}
public final void message(Object src, Object obj)
{
if( logMode.getLogMessages() )
logImpl(src, obj, MESSAGE, out);
}
public final void debug(Object src, Object obj)
{
if( logMode.getLogDebugs() )
logImpl(src, obj, DEBUG, out);
}
public final void warning(Object src, Object obj)
{
if( logMode.getLogWarnings() )
logImpl(src, obj, WARNING, err);
}
public final void error(Object src, Object obj)
{
if( logMode.getLogErrors() )
logImpl(src, obj, ERROR, err);
}
private void logImpl(Object src, Object obj, int type, PrintStream ps)
{
if( ps==null )
return;
String class_name = XRepository.getResourceManager().getClassName(src);
if( isAnException(class_name, type) )
return;
ps.print("["+getTitle(type)+"-"+class_name+"] ");
if( obj instanceof Throwable )
((Throwable)obj).printStackTrace(ps);
else
ps.println(obj);
}
private boolean isAnException(String str, int type)
{
Iterator it = logExceptions_Modes.keySet().iterator();
String excep_item;
XLogMode log_mode;
while( it.hasNext() )
{
excep_item = (String)it.next();
log_mode = (XLogMode)logExceptions_Modes.get(excep_item);
if( excep_item.equalsIgnoreCase(str) )
{
if( ((type==MESSAGE) && (log_mode.getLogMessages()==false)) ||
((type==DEBUG) && (log_mode.getLogDebugs()==false)) ||
((type==WARNING) && (log_mode.getLogWarnings()==false)) ||
((type==ERROR) && (log_mode.getLogErrors()==false)) )
return true;
}
}
return false;
}
private String getTitle(int type)
{
switch( type )
{
case MESSAGE:
return ">Message:";
case DEBUG:
return ">Debug:";
case WARNING:
return ">Warning:";
case ERROR:
return ">Error:";
default:
return ">??!!";
}
}
// Attributes:
private static final int MESSAGE = 1;
private static final int DEBUG = 3;
private static final int WARNING = 5;
private static final int ERROR = 7;
private PrintStream out = null;
private PrintStream err = null;
private Map logExceptions_Modes = new HashMap();
private XLogMode logMode = new XLogMode();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -