[Rabbit-proxy-development] Logging
Brought to you by:
ernimril
From: Rick L. <rl...@le...> - 2006-02-08 20:01:00
|
Hi Robo, Rabbit works really well for me. Just a minor suggestion for logging: use java.util.logging instead of rabbit.util.Logger. More flexible, and can log to XML. ( Maybe it would be useful to log to a CSV file and view it as a spreadsheet in OO). I have not mapped the Rabbit log types to the Sun levels, just catted them for now. Next: it would be nice if log rotation was automatic. cheers -- Rick In Proxy, public static Logger logger; private void setupErrorLog() { String sLogDir = config.getProperty(getClass().getName(), "errorlogdir", "logs"); try{ FileHandler fh = new FileHandler(sLogDir + java.io.File.separatorChar + "error_log"); logger = Logger.getLogger("LoggingExample1"); logger.setLevel(Level.INFO); // fh.setFormatter(new XMLFormatter()); // fh.setFormatter(new SimpleFormatter()); fh.setFormatter(new SimplerTextFormatter()); logger.addHandler(fh); } catch (IOException e){ System.out.println("cannot open logfile "); } public void logError(int type, String error) { if (type < loglevel) return; String stype = getErrorLevelString(type); //zzz Date d = new Date(); // d.setTime(d.getTime() - offset); StringBuilder sb = new StringBuilder("["); //zzz synchronized (sdfMonitor) { // sb.append(sdf.format(d)); } // sb.append("]["); sb.append(stype); sb.append("]["); sb.append(error); sb.append("]"); logger.log(Level.INFO, sb.toString()); /* zzzzz synchronized (errorMonitor) { errorlog.println(sb.toString());}*/ } new class: /** * Like java.util.logging.SimpleFormatter but simpler. * @author Rick Leir LeirTech.com */ package com.leirtech.logging; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.LogRecord; /** * @author rleir * */ public class SimplerTextFormatter extends Formatter { /** The format we write dates on. */ private SimpleDateFormat sdf = new SimpleDateFormat( "dd/MMM/yyyy:HH:mm:ss 'GMT' "); public String format(LogRecord lr) { Date d = new Date(lr.getMillis()); String s = sdf.format(d) + lr.getLevel() + " " + lr.getMessage(); Throwable t = lr.getThrown(); if (t != null) s += t.toString(); s += "\n"; return s; } } -- Rick Leir 613-828-8289 -> rick http://www.leirtech.com/rick/ AT leirtech DOT com |