You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Boris Unckel <bo...@gmx.net> on 2005/03/17 08:04:54 UTC

Ugli as super adaptor Part2 JDK14Logger

Hello,

tonight I wrote the first implementation of an Logger. To get an quick
example I used the JDK14Logger, due to its internal
I18N feature. One migtht think I am a JDK14 Logging fan, that is not right.
In my company there are two logging adaptors,
which are quite bad and older than my presence there. But one of them has
the MessageFormat capabilites and is heavily used.
Internally log4j is always in use, even on JRE 1.4 platforms.

Please comment on it!

Boris

First the Logger, below the JDK14LoggerFA:

public class JDK14Logger implements ULogger {
    final Logger logger;

    // WARN: JDK14Logger constructor should have only package access so that
    // only JDK14LoggerFA be able to create one.
    JDK14Logger(Logger logger) {
        this.logger = logger;
    }

    public boolean isTraceEnabled() {
        return logger.isLoggable(Level.FINEST);
    }

    public void trace(Object msg) {
        logger.log(Level.FINEST, String.valueOf(msg));
    }

    public void trace(Object msg, Throwable t) {
        logger.log(Level.FINEST, String.valueOf(msg),t);
    }

    public void trace(String parameterizedMsg, Object param1) {
        logger.log(Level.FINEST, parameterizedMsg, param1);
    }

    public void trace(String parameterizedMsg, Object param1, Throwable t) {
        if (logger.isLoggable(Level.FINEST)) {
            LogRecord lr = new LogRecord(Level.FINEST, parameterizedMsg);
            lr.setParameters(new Object[] { param1 });
            lr.setThrown(t);
            lr.setResourceBundle(logger.getResourceBundle());
            lr.setResourceBundleName(logger.getResourceBundleName());
            logger.log(lr);
        }
    }

    public void trace(String parameterizedMsg, Object[] params) {
        logger.log(Level.FINEST, parameterizedMsg, params);
    }

    public void trace(String parameterizedMsg, Object[] params, Throwable t)
{
        if (logger.isLoggable(Level.FINEST)) {
            LogRecord lr = new LogRecord(Level.FINEST, parameterizedMsg);
            lr.setParameters(params);
            lr.setThrown(t);
            lr.setResourceBundle(logger.getResourceBundle());
            lr.setResourceBundleName(logger.getResourceBundleName());
            logger.log(lr);
        }
    }
.... and so on for debug, info, warn, error, fatal.

/**
 * @author ceki
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class JDK14LoggerFA implements LoggerFactoryAdapter {
    Map map;

    public JDK14LoggerFA() {
        map = new HashMap();
    }

    /*
     * (non-Javadoc)
     *
     * @see org.apache.ugli.LoggerFactoryAdapter#getLogger(java.lang.String)
     */
    public ULogger getLogger(String name) {
        ULogger ulogger = (ULogger) map.get(name);
        if (ulogger == null) {
            Logger logger = Logger.getLogger(name);
            ulogger = new JDK14Logger(logger);
            map.put(name, ulogger);
        }
        return ulogger;
    }

    /**
     * @see org.apache.ugli.LoggerFactoryAdapter#getLogger(java.lang.String,
     *      java.lang.String)
     */
    public ULogger getLogger(String domainName, String subDomainName) {
        return getLogger(domainName);
    }

    /**
     * @see
org.apache.ugli.LoggerFactoryAdapter#getLoggerWithBundle(java.lang.String,
     *      java.lang.String)
     */
    public ULogger getLoggerWithBundle(String name, String resourceBundle) {
        ULogger ulogger = (ULogger) map.get(name);
        if (ulogger == null) {
            Logger logger = Logger.getLogger(name,resourceBundle);
            ulogger = new JDK14Logger(logger);
            map.put(name, ulogger);
        }
        return ulogger;
    }

    /**
     * @see
org.apache.ugli.LoggerFactoryAdapter#getLoggerWithBundle(java.lang.String,
     *      java.lang.String, java.lang.String)
     */
    public ULogger getLoggerWithBundle(String domain, String subDomain,
            String resourceBundle) {
        return getLoggerWithBundle(domain,resourceBundle);
    }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org