On Mon, 2002-07-22 at 12:37, Remy Maucherat wrote:
>
> Assuming people actually like the JDK 1.4 logger and think it's useful,
> I like that solution better (there are flags, use them).
The JDK Logger is pretty cool. Although the default output is pretty
plain. I use it with my own formatter. My formatter is tweaked for
Tomcat - so it condenses some information and colorizes some
information.
This is a sample of its output,
http://hue.jadn.com:81/~bob/xdmp.png
My formatter is attached. It assumes an Xterm window sized to 175 or so.
Cheers,
-bob
package com.jadn;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.Date;
import java.sql.Timestamp;
/*
designed for a XTERM window of withd 175 (or so)
INSTALL
compile it
jar it (ie. jar cf jadn.jar com/jadn/XTermFormatter.class)
install it (cp jadn.jar $JAVA_HOME/jre/lib/ext/jadn.jar
edit $JAVA_HOME/jre/lib/logging.properties and comment out the SimpleFormatter
and add this one in,
#java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.formatter = com.jadn.XTermFormatter
enjoy
*/
public class XTermFormatter extends Formatter {
/*
0 Black
1 Red
2 Green
3 Yellow
4 Blue
5 Magenta
6 Cyan
7 White
*/
// colors foreground/background (for xterm)
private static final String RESET = "\033[0m";
private static final String BOLD = "\033[1m";
private static final String BLACK_WHITE = "\033[30;47m";
private static final String RED_WHITE = "\033[31;47m";
private static final String GREEN_WHITE = "\033[32;47m";
private static final String YELLOW_WHITE = "\033[33;47m";
private static final String BLUE_WHITE = "\033[34;47m";
private static final String PINK_WHITE = "\033[35;47m";
private static final String LTGREEN_WHITE= "\033[36;47m";
public synchronized String format(LogRecord lr){
StringBuffer sb = new StringBuffer();
// -- LOG: LEVEL
Level level = lr.getLevel();
if ( level == level.SEVERE )
sb.append( RED_WHITE );
else if ( level == level.WARNING )
sb.append( YELLOW_WHITE );
else if ( level == level.INFO )
sb.append( BOLD+GREEN_WHITE );
else if ( level == level.CONFIG )
sb.append( PINK_WHITE );
else if ( level == level.FINE )
sb.append( BLUE_WHITE );
else
sb.append( BLACK_WHITE );
fill( sb, level.toString(), 5 );
sb.append( RESET );
sb.append( " " );
// -- LOG: TIME STAMP
Timestamp ts = new Timestamp(lr.getMillis());
// yyyy-mm-dd hh:mm:ss.fffffffff
// 0123456789012345678
// 1
sb.append( ts.toString().substring(11, 19) );
// -- LOG: LOGGER DOMAIN (or name of logger)
sb.append( " " );
sb.append( PINK_WHITE );
String lgName = lr.getLoggerName();
if ( lgName.length()>15){
sb.append( ">" );
sb.append( lgName.substring(lgName.length()-14) );
} else {
fill(sb, lgName, 15);
}
sb.append( RESET );
sb.append( " " );
// -- LOG: SOURCE CLASS AND METHOD
String cname = shorten(lr.getSourceClassName());
int lastDot = cname.lastIndexOf('.');
if ( lastDot == -1 ){
cname=BLUE_WHITE+cname+RESET;
} else {
cname=cname.substring(0,lastDot)+BLUE_WHITE+cname.substring(lastDot)+RESET;
}
cname += "." + lr.getSourceMethodName();
fill( sb, cname, 60 );
sb.append( " " );
// -- LOG: MESSAGE AND EXCEPTION
sb.append( lr.getMessage() );
if (lr.getThrown() != null ){
sb.append( " " );
sb.append( lr.getThrown() );
}
sb.append("\n");
return sb.toString();
}
// try and shorten known names
private String shorten(String cname){
if ( cname.startsWith( "org.apache.catalina" ) )
cname = "o.a.c"+cname.substring("org.apache.catalina".length());
if ( cname.startsWith( "org.apache" ) )
cname = "o.a"+cname.substring("org.apache".length());
return cname;
}
// fill with spaces until supplied string reaches requested minLen
// (longer strings are passed through without being chopped)
private void fill( StringBuffer sb, String toAdd, int minLen ){
sb.append(toAdd);
int fillTo = minLen - toAdd.length();
while (fillTo-->0 )
sb.append(" ");
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>