Hi I tried to implement the repository selectors.But still problems occurs. Please find my repository selector below. However i am not using Servlets to initialize the log4j. So Even to implement repository selector i am not using servlets. Our customers requested us to not use servlets.Since we made everything using Java and jsps.
============================================================== package com.CK; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.log4j.Hierarchy; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.apache.log4j.spi.LoggerRepository; import org.apache.log4j.spi.RepositorySelector; import org.apache.log4j.spi.RootCategory; import java.io.File; import org.apache.log4j.Logger; import org.apache.log4j.Level; import org.apache.log4j.PropertyConfigurator; /** * This RepositorySelector is for use with web applications. * It assumes that your log4j.xml file is in the WEB-INF directory. * @author Stan Silvert */ public class Log4jSetup implements RepositorySelector { private static boolean initialized = false; // This object is used for the guard because it doesn't get // recycled when the application is redeployed. private static Object guard = LogManager.getRootLogger(); private static Map repositories = new HashMap(); private static LoggerRepository defaultRepository; /** * Register your web-app with this repository selector. */ public static String rPath = null; public Log4jSetup(String realPath) { rPath = realPath; //ServletConfig config; init(); } public static synchronized void init() { //String realPath = getServletConfig().getServletContext().getRealPath("/"); //rPath = realPath; if( !initialized ) // set the global RepositorySelector { defaultRepository = LogManager.getLoggerRepository(); RepositorySelector theSelector = new Log4jSetup(); LogManager.setRepositorySelector(theSelector, guard); initialized = true; } Hierarchy hierarchy = new Hierarchy(new RootCategory(Level.DEBUG)); loadLog4JConfig(hierarchy); ClassLoader loader = Thread.currentThread().getContextClassLoader(); repositories.put(loader, hierarchy); } // load config.properties from WEB-INF private static void loadLog4JConfig(Hierarchy hierarchy) { try { String filePath = rPath+File.separator+"WEB-INF"+File.separator+"config.properties"; String logfilePath = rPath+File.separator+"WEB-INF"+File.separator+"logs"+File.separator; if( !(new File(filePath)).isFile()) { System.err.println("ERROR:Log4jSetUp::Cannot read the Log4J configuration file. " + "Please check the path of the config init param in web.xml"); } System.setProperty("ck.base",logfilePath); PropertyConfigurator.configure(filePath); } catch (Exception e) { System.err.println("Throws Exception::"+e.getMessage()); } } private Log4jSetup() { } public LoggerRepository getLoggerRepository() { ClassLoader loader = Thread.currentThread().getContextClassLoader(); LoggerRepository repository = (LoggerRepository)repositories.get(loader); if (repository == null) { return defaultRepository; } else { return repository; } } } ========================================================= Can you please tell me whats wrong with the code.Is there any other way to handle this?. Thanks & Regards, Sivamma. Search the mailing list archives. I have never used them -- I am just somewhat familiar with what they do. -- View this message in context: http://www.nabble.com/Urgent-Please--How-to-create-different-log-files-with-different-property-files-in-same-webapplication-tf3974952.html#a11302960 Sent from the Log4j - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]