Hi jake, Before I start using Log4j-1.3, I want to confirm if my Log4j.xml is valid for my requirements Below is the xml..I removed SYSTEM entry as I was getting log4j.dtd file not found error during weblogic startup. In this xml do I need to specify logger entry? Am I missing anything!
thanks, Sohan <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration > <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <!-- A time/date based rolling appender --> <!-- Logs messages to ${jboss.server.home.dir}/log/test1.log --> <!-- <appender name="TEST" class="org.jboss.logging.appender.DailyRollingFileAppender"> --> <appender name="TEST" class="org.apache.log4j.RollingFileAppender"> <!-- <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> --> <param name="File" value="pcs.log"/> <param name="Append" value="false"/> <!-- Rollover at midnight each day --> <!-- <param name="DatePattern" value="'.'yyyy-MM-dd"/> --> <layout class="org.apache.log4j.PatternLayout"> <!-- The default pattern: Date Priority [Category] Message\n --> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/> --> </layout> </appender> <!-- ======================= --> <!-- Setup the Root category --> <!-- ======================= --> <root> <appender-ref ref="TEST"/> </root> </log4j:configuration> Jacob Kjome wrote: > > > Have you tried using the JNDI repository selector solution, such as > in Log4j-1.3? To test this out quickly, you could just try using > Log4j-1.3 and its ContextJNDISelector class to perform the repository > selection. I know it works. I'm not sure why you are seeing odd > results with the classloader-based selector you wrote, but I haven't > gone over the code intensively either. In any case, don't use a > classloader-based approach. It will give you nothing but headaches, > in my experience. > > Add the following to your server startup script... > > -Dlog4j.repositorySelector=JNDI > > > Add the following to your web.xml.... > > <listener> > <!-- this feature may require building Log4j-1.3 from > source, as it may not be in the latest released alpha jar??? --> > > <listener-class>org.apache.log4j.selector.servlet.ContextDetachingSCL</listener-class> > </listener> > > <env-entry> > <description>JNDI logging context for this app</description> > <env-entry-name>log4j/context-name</env-entry-name> > <env-entry-value>myapp</env-entry-value> > <env-entry-type>java.lang.String</env-entry-type> > </env-entry> > > <env-entry> > <description>URL for configuring log4j context</description> > <env-entry-name>log4j/configuration-resource</env-entry-name> > <env-entry-value>myapp-log4j.xml</env-entry-value> > <env-entry-type>java.lang.String</env-entry-type> > </env-entry> > > > Jake > > At 07:08 PM 4/10/2007, you wrote: > > > >"What do you mean "'pcs' is the log file name"? That would be the > logger > >name, > >not the file name." > >My mistake, I meant to say that it is both the logger name as well as I > >named the log file name same too after the application name. > > I tried with both LogFactory of commons-logging as well as direct use > of > >Log4j. Behavior is the same > >I did notice one thing, Log information is being written normally from > java > >classes that extend HttpServlet. > >Logging from other java class files is not working as intended. My > >application uses struts 1.2.9 too. > > > >thanks, > >Sohan > > > > > >Jacob Kjome wrote: > >> > >> Quoting sohan <[EMAIL PROTECTED]>: > >> > >>> > >>> I changed to use Log4j.xml from Log4j.properties and also changed to > >>> non-static loggers and with in the static methods followed the link > >>> examples. Now the logging is taking place only for the loggers > mentioned > >>> in > >>> the static methods, Log log = LogFactory.getLog("pcs"); pcs is the > log > >>> file > >>> name. > >>> > >> > >> What do you mean "'pcs' is the log file name"? That would be the > logger > >> name, > >> not the file name. > >> > >> Also, I didn't mean to direct you to use commons-logging. If you were > >> using > >> log4j directly, please keep using it. In fact, log wrappers like > SLF4J > >> and > >> commons-logging have issues when it comes to repository selectors. > Search > >> the > >> SLF4J user list for details on this. There's also a bug in the SLF4J > >> database > >> about this. I believe the same applies to commons-logging. Log4j > cannot > >> guarantee proper logging separation when you use a wrapper. > >> > >>> Any idea as to why the non static logger is not working! > >>> > >> > >> I would guess it's because you are using commons-logging. Use Log4j > >> directly, > >> just as you were previously. I only sent you the commons-logging link > >> because > >> they had a good synopsis of the static logger issue, not to convince > you > >> to > >> move to commons-logging. > >> > >> > >> Jake > >> > >>> thanks, > >>> Sohan > >>> > >>> > >>> Jacob Kjome wrote: > >>> > > >>> > > >>> > 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] > >>> > > >>> > > >>> > > >>> > >>> -- > >>> View this message in context: > >>> > >> > >http://www.nabble.com/separate-log-files-for-application%27s-on-weblog > >ic-with-log4j-using-RepositorySelector-tf3549324.html#a9926589 > >>> 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] > >> > >> > >> > > > >-- > >View this message in context: > >http://www.nabble.com/separate-log-files-for-application%27s-on-weblog > >ic-with-log4j-using-RepositorySelector-tf3549324.html#a9931051 > >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] > > > -- View this message in context: http://www.nabble.com/separate-log-files-for-application%27s-on-weblogic-with-log4j-using-RepositorySelector-tf3549324.html#a9941069 Sent from the Log4j - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
