Return-Path: Delivered-To: apmail-logging-log4j-user-archive@www.apache.org Received: (qmail 54461 invoked from network); 13 Apr 2007 02:53:31 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Apr 2007 02:53:31 -0000 Received: (qmail 88295 invoked by uid 500); 13 Apr 2007 02:53:31 -0000 Delivered-To: apmail-logging-log4j-user-archive@logging.apache.org Received: (qmail 88265 invoked by uid 500); 13 Apr 2007 02:53:31 -0000 Mailing-List: contact log4j-user-help@logging.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Log4J Users List" Reply-To: "Log4J Users List" Delivered-To: mailing list log4j-user@logging.apache.org Received: (qmail 88254 invoked by uid 99); 13 Apr 2007 02:53:31 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Apr 2007 19:53:31 -0700 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=INFO_TLD,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (herse.apache.org: 216.148.227.155 is neither permitted nor denied by domain of hoju@visi.com) Received: from [216.148.227.155] (HELO rwcrmhc15.comcast.net) (216.148.227.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Apr 2007 19:53:23 -0700 Received: from nicki.visi.com (c-24-131-157-61.hsd1.mn.comcast.net[24.131.157.61]) by comcast.net (rwcrmhc15) with SMTP id <20070413025302m15007jf99e>; Fri, 13 Apr 2007 02:53:02 +0000 X-Mailer: QUALCOMM Windows Eudora Version 7.1.0.9 Date: Thu, 12 Apr 2007 21:54:31 -0500 To: "Log4J Users List" From: Jacob Kjome Subject: Re: separate log files for application's on weblogic with log4j using RepositorySelector In-Reply-To: <9969473.post@talk.nabble.com> References: <9908677.post@talk.nabble.com> <20070410044314.0942210FB007@herse.apache.org> <9926589.post@talk.nabble.com> <1176245821.461c163d237b1@my.visi.com> <9931051.post@talk.nabble.com> <20070411050930.46B3710FB017@herse.apache.org> <9941069.post@talk.nabble.com> <1176305920.461d0100771fa@my.visi.com> <9969473.post@talk.nabble.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed X-Relayed-By: GPGrelay Version 0.959 (Win32) X-Virus-Checked: Checked by ClamAV on apache.org Message-Id: <20070413025324.A317010FB015@herse.apache.org> At 05:13 PM 4/12/2007, you wrote: > >I have tried many ways to get this to work..partly successful but overall >can't this to work. I even purchased the manual and reviewed it. > >Tried Log4j 1.3, It was like opening a can of worms..weblogic 8.1.6 internal >logging complained, had to revert back to Log4j 1.2 version. > That's too bad. Of course this is why there will most likely never be an official release of 1.3. It's currently too incompatible with 1.2.xx. >Earlier I was able to log only class files extending Httpservlet which were >identified in web.xml file with load-on-startup values set to 1 and 2. >Looking closely at weblogic startup script, found a configuration file being >set there for weblogic workshop with -Dlog4j.configuration property, once I >commented this out, I was able to log from other class files of the >application however "filter" class files are not being logged, Based on >System.out.... statements, console shows that these filter classes are being >loaded even before the servlet object initializing log4j RepositorySelector >with load-on-startup set to 1 is loaded At this point I am not getting >default log4j.log file either. Basically, my filter log is lost. Tried >getLogger("pcs") based on logger configuration in properties file, didn't >get any errors not logging. > Why in the world are you using a Servlet to perform Log4j initialization? That's what a ServletContextListener is for, and it will certainly be loaded before any other webapp resources get loaded, such as servlets or filters. And if that fails, you can always write a Weblogic startup class (see the Weblogic docs) that installs the repository selector at Weblogic startup time, before any apps get loaded. And why don't you lower the level of your root logger in the configuration to be DEBUG instead of ERROR? Not permanently, just until you verify that you are getting logging output, at which point you can set it back. >I made similar changes to my second application, basically copied the >MyRepositorySelector.java file changed the Log4jinit.java file to set >RepositorySelector and Log4j.properties file or Log4j.xml file are similar >with exception of the "log4j.appender.FILE.File", "log4j.logger.regs" >entries, in bold below. Configuration file names are the same. >In this case both log files are being created, however, the application that >is loaded last during startup, only that application's log is being created. >First application's log is not being written after initialization entries, >unless second application is either removed or changes related to >RepositorySelector are reverted. > Probably an issue with using a classloader-based repository selector rather than a JNDI-based one. >log4j.rootLogger=ERROR, FILE, CONSOLE >log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender >log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout >#log4j.appender.CONSOLE.layout.ConversionPattern=[%d{ISO8601}] %-5p %c - >%m%n >log4j.appender.CONSOLE.layout.ConversionPattern=[%d{ISO8601}] %-5p %l - %m%n >#log4j.appender.CONSOLE.layout.ConversionPattern=[%d{ISO8601}] %-5p %c:%L - >%m%n >log4j.logger.regs=DEBUG >log4j.logger.doc=DEBUG >log4j.appender.FILE=org.apache.log4j.RollingFileAppender >log4j.appender.FILE.layout=org.apache.log4j.PatternLayout >log4j.appender.FILE.layout.ConversionPattern=[%d{ISO8601}] %-5p %l - %m%n >log4j.appender.FILE.File=regs.log >log4j.appender.FILE.MaxFileSize=1MB >log4j.appender.FILE.MaxBackupIndex=2 > >After 3 days, At this point I am not sure if I can get this to work! > I know how frustrating it can be. But did you try the ContextJNDISelector from the Log4j sandbox? It is 1.2 compatible. I can't promise you it will work in Weblogic because I haven't tried it with that server, but it's worth a shot. Here's the link again.... http://svn.apache.org/viewvc/logging/sandbox/log4j/log4j_sandbox/tags/LOG4J_SANDBOX_ALPHA3/src/java/org/apache/log4j/selector/ Jake >thanks, >Sohan > > > >Jacob Kjome wrote: >> >> >> Looks mostly correct. You could change jakarta.apache.org or >> logging.apache.org, but that's inconsequential. Also, you should apply a >> level >> to the root logger, such as , or maybe set it to >> DEBUG for >> testing. >> >> See the Log4j Wiki [1] for links to WizardForge (look at the bottom of the >> page), which will walk you through the steps of generating valid Log4j 1.2 >> and >> 1.3 compatible config files. >> >> Just to be clear, I'm not advocating moving to Log4j 1.3, as it may never >> be >> fully released outside of alpha builds. I just want to to try it out >> since it >> currently has a working JNDIContextSelector that you can use to test >> against. >> It's a selector that I know, at least in my testing, works. If you find >> it to >> work for you, you can adapt it to create your own selector which would be >> compatible with Log4j 1.2. I also forgot to mention that I created a >> Log4j-1.2 >> compatible ContextJNDISelector in the log4j sandbox [2]. It works >> slightly >> differently than the one in Log4j-1.3, but it might provide a good base >> for you >> to start from. >> >> [1] http://wiki.apache.org/logging-log4j/Log4JProjectPages >> [2] >> >http://svn.apache.org/viewvc/logging/sandbox/log4j/log4j_sandbox/tags/ >LOG4J_SANDBOX_ALPHA3/src/java/org/apache/log4j/selector/ >> >> >> Jake >> >> Quoting sohan : >> >>> >>> 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 >>> >>> >>> >>> >>> >> debug="false"> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> 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.... >>> > >>> > >>> > >>> > >>> > >>> >> >org.apache.log4j.selector.servlet.ContextDetachingSCL< >/listener-class> >>> > >>> > >>> > >>> > JNDI logging context for this app >>> > log4j/context-name >>> > myapp >>> > java.lang.String >>> > >>> > >>> > >>> > URL for configuring log4j context >>> > log4j/configuration-resource >>> > myapp-log4j.xml >>> > java.lang.String >>> > >>> > >>> > >>> > 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 : >>> > >> >>> > >>> >>> > >>> 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... >>> > >>> > > >>> > >>> > > >>> > >>> > > log4j-init >>> > >>> > > >>> > >>> pcs.common.util.Log4jInit >>> > >>> > > >>> > >>> > > Log4JProperties >>> > >>> > > >>> > >>> > /WEB-INF/log4j-dev.properties >>> > >>> > > >>> > >>> > > >>> > >>> > > LogToFileOnly >>> > >>> > > false >>> > >>> > > >>> > >>> > > 1 >>> > >>> > > >>> > >>> > > >>> > >>> > >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: >>> log4j-user-unsubscribe@logging.apache.org >>> > >>> > >For additional commands, e-mail: >>> > log4j-user-help@logging.apache.org >>> > >>> > >>> > >>> > >>> > >>> > >>> > --------------------------------------------------------------------- >>> > >>> > To unsubscribe, e-mail: >>> log4j-user-unsubscribe@logging.apache.org >>> > >>> > For additional commands, e-mail: >>> log4j-user-help@logging.apache.org >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> >>> > >>> -- >>> > >>> 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: log4j-user-unsubscribe@logging.apache.org >>> > >>> For additional commands, e-mail: >>> log4j-user-help@logging.apache.org >>> > >>> >>> > >>> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> --------------------------------------------------------------------- >>> > >> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org >>> > >> For additional commands, e-mail: log4j-user-help@logging.apache.org >>> > >> >>> > >> >>> > >> >>> > > >>> > >-- >>> > >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: log4j-user-unsubscribe@logging.apache.org >>> > >For additional commands, e-mail: log4j-user-help@logging.apache.org >>> > >>> > >>> > --------------------------------------------------------------------- >>> > To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org >>> > For additional commands, e-mail: log4j-user-help@logging.apache.org >>> > >>> > >>> > >>> >>> -- >>> View this message in context: >>> >> >http://www.nabble.com/separate-log-files-for-application%27s-on-weblog >ic-with-log4j-using-RepositorySelector-tf3549324.html#a9941069 >>> Sent from the Log4j - Users mailing list archive at Nabble.com. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org >>> For additional commands, e-mail: log4j-user-help@logging.apache.org >>> >>> >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org >> For additional commands, e-mail: log4j-user-help@logging.apache.org >> >> >> > >-- >View this message in context: >http://www.nabble.com/separate-log-files-for-application%27s-on-weblog >ic-with-log4j-using-RepositorySelector-tf3549324.html#a9969473 >Sent from the Log4j - Users mailing list archive at Nabble.com. > > >--------------------------------------------------------------------- >To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org >For additional commands, e-mail: log4j-user-help@logging.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org For additional commands, e-mail: log4j-user-help@logging.apache.org