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]>