/* JUG Java Uuid Generator * * Copyright (c) 2002- Tatu Saloranta, tatu.saloranta@iki.fi * * Licensed under the License specified in the file LICENSE which is * included with the source code. * You may not use this file except in compliance with the License. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.safehaus.uuid.ext; import java.io.*; import org.apache.log4j.Logger; //import org.safehaus.uuid.Logger; /** * Simple wrapper that allows easy connecting of JUG logging into log4j * logging subsystem. *<p> * Note: using this class implies all the dependencies that the log4j * subsystem in use requires (JDK 1.2 or above, in general) */ public class Log4jLogger extends org.safehaus.uuid.Logger { private org.apache.log4j.Logger mPeer; private Log4jLogger(org.apache.log4j.Logger peer) { mPeer = peer; } /** * Static method to call to make JUG use to proxy all of its logging * through the specified log4j <code>Logger</code> instance. *<p> * Method will create a simple wrapper, and call * {@link org.safehaus.uuid.Logger#setLogger} with the wrapper as * the argument. This will then re-direct logging from the previously * defined Logger (which initially is the simple JUG logger) to the * new wrapper, which routes logging messages to the log4j peer Logger * instance. */ public static void connectToLog4j(org.apache.log4j.Logger peer) { Log4jLogger logger = new Log4jLogger(peer); // This is static method of the base class... setLogger(logger); } /** * Static method to call to make JUG use a log4j proxy all of its logging * through a log4j <code>Logger</code> constructed to correspond with * <code>org.safehaus.uuid.Logger</code> class (this generally determines * log4j category output etc settings). *<p> * Method will create a simple wrapper, and call * {@link org.safehaus.uuid.Logger#setLogger} with the wrapper as * the argument. This will then re-direct logging from the previously * defined Logger (which initially is the simple JUG logger) to the * new wrapper, which routes logging messages to the log4j peer Logger * instance. */ public static void connectToLog4j() { connectToLog4j(org.apache.log4j.Logger.getLogger(org.safehaus.uuid.Logger.class)); } /* ///////////////////////////////////////////////////////////// // Overridable implementation/instance methods from // Logger base class ///////////////////////////////////////////////////////////// */ // // // Config // This is ok; let's just use base class functionality: //protected void doSetLogLevel(int ll); /** * Note: this method is meaningless with log4j, since it has more * advanced output mapping and filtering mechanisms. As such, it's * a no-op */ protected void doSetOutput(PrintStream str) { // Could also throw an Error.. but for now, let's log instead... mPeer.warn("doSetOutput(PrintStream) called on "+getClass()+" instance, ignoring."); } /** * Note: this method is meaningless with log4j, since it has more * advanced output mapping and filtering mechanisms. As such, it's * a no-op */ protected void doSetOutput(Writer w) { mPeer.warn("doSetOutput(Writer) called on "+getClass()+" instance, ignoring."); } // // // Logging methods protected void doLogInfo(String msg) { if (mLogLevel <= LOG_INFO_AND_ABOVE) { mPeer.info(msg); } } protected void doLogWarning(String msg) { if (mLogLevel <= LOG_WARNING_AND_ABOVE) { mPeer.warn(msg); } } protected void doLogError(String msg) { if (mLogLevel <= LOG_ERROR_AND_ABOVE) { mPeer.error(msg); } } }