1. Use non-static loggers (for Serializable classes, you'll need to
mark these as transient)
2. Avoid Classloader-based repository selectors. Use JNDI-base
selectors. There's already one written for Log4j-1.3alpha. Even if
you don't care to use 1.3, you can use it to get an idea of how to
write one for 1.2.
See:
http://www.qos.ch/logging/sc.jsp
http://wiki.apache.org/jakarta-commons/Logging/StaticLog
Jake
At 03:09 PM 4/9/2007, you wrote:
>
>I followed some examples on the web to use RepositorySelector to implement
>separate logging for 2 applications deployed on the same instance of
>weblogic server. I have the Lgo4j.properties file under Web-Inf/ folder,
>This is loaded through web.xml file through a startup servlet. Problem is
>logging is taking place either in Log4j.log file or other applications log
>file. In each java class file, I use..
> private static Logger log = Logger.getLogger(LoginFilter.class);
>and call the log .info ..accordingly. In log4j properties file, only
>difference is file name for 2 applications.
>
>I am using weblogic 8.1.6 and Log4j 1.2.8 versions
>
>thanks for the help
>Sohan
>
>web.xml entry...
>
> <servlet>
> <servlet-name>log4j-init</servlet-name>
> <servlet-class>pcs.common.util.Log4jInit</servlet-class>
> <init-param>
> <param-name>Log4JProperties</param-name>
> <param-value>/WEB-INF/log4j-dev.properties</param-value>
> </init-param>
> <init-param>
> <param-name>LogToFileOnly</param-name>
> <param-value>false</param-value>
> </init-param>
> <load-on-startup>1</load-on-startup>
> </servlet>
>
>public class Log4jInit extends HttpServlet {
> static Logger log = Logger.getLogger(Log4jInit.class);
> public void init() throws ServletException {
>
System.out.println("\n\n---------------Log4jInit---------------\n\n");
> MyRepositorySelector.init(this.getServletConfig());
> Logger log = Logger.getLogger(this.getClass());
> log.info("Log message from Log4jInit servlet");
> System.out.println("\n\n---------------Log4jInit:
>Complete---------------\n\n");
>
> }
>
>}
>
>public class MyRepositorySelector implements RepositorySelector
>{
> private static boolean initialized = false;
> private static Object guard = LogManager.getRootLogger();
>
> private static Map repositories = new HashMap();
> private static LoggerRepository defaultRepository;
>
> public static synchronized void init(ServletConfig config)
> throws ServletException {
> if( !initialized ) // set the global RepositorySelector
> {
> defaultRepository = LogManager.getLoggerRepository();
> RepositorySelector theSelector = new MyRepositorySelector();
> LogManager.setRepositorySelector(theSelector, guard);
> initialized = true;
> }
>
> Hierarchy hierarchy = new Hierarchy(new RootCategory(Level.DEBUG));
> loadLog4JConfig(config, hierarchy);
> ClassLoader loader = Thread.currentThread().getContextClassLoader();
> repositories.put(loader, hierarchy);
> }
>
> public static synchronized void removeFromRepository() {
> repositories.remove(Thread.currentThread().getContextClassLoader());
> }
>
>
> private static void loadLog4JConfig(ServletConfig config,
> Hierarchy hierarchy)
> throws ServletException {
> try {
>
> String strLogProperties =
>
config.getInitParameter(GlobalDictionary.LOG_PROPERTIES);
> System.out.println("strLogProperties: " + strLogProperties);
> Properties logProperties = new Properties();
> try {
>
>logProperties.load(config.getServletContext().getResourceAsStream(strL
>ogProperties));
> } catch (Exception e) {
> System.out.println("ERROR: Loading log4j
properties: " +
>e.getMessage());
> //e.printStackTrace();
> }
> PropertyConfigurator propConf = new PropertyConfigurator();
> propConf.doConfigure(logProperties, hierarchy);
> } catch (Exception e) {
> throw new ServletException(e);
> }
> }
>
> private MyRepositorySelector() {
> }
>
> public LoggerRepository getLoggerRepository() {
> ClassLoader loader = Thread.currentThread().getContextClassLoader();
> LoggerRepository repository =
>(LoggerRepository)repositories.get(loader);
>
> if (repository == null) {
> return defaultRepository;
> } else {
> return repository;
> }
> }
>}
>--
>View this message in context:
>http://www.nabble.com/separate-log-files-for-application%27s-on-weblog
>ic-with-log4j-using-RepositorySelector-tf3549324.html#a9908677
>Sent from the Log4j - Users mailing list archive at Nabble.com.
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]