[ https://issues.apache.org/jira/browse/APA-9?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Randy Watler resolved APA-9. ---------------------------- Resolution: Fixed This issue has been resolved by the introduction of the apa-logging component and use of a system property set in the container/global scope to eliminate any webapp race conditions and/or platform webapp initialization order artifacts. Here is the original proposal: Goals: 1. Simplify log configuration in portlet applications via preconfigured system properties setup in container scope, (resolving JIRA issue APA-9). 2. Provide a technique that allows administrators with access to the portal web application container configuration to simply relocate log files outside expanded war file directories. 3. Maintain separate log files per portlet application and portal so that originating application code can be determined. 4. Avoid container/portal logging implementation requirements and class path pollution so that portlet applications are able to utilize a logging implementation of choice. 5. Provide a "zero-configuration" for Jetspeed demo, installer, and developer build environments. Proposed Solution: 1. Configure portlet application logging using a well known system property as directory for logging, (i.e. 'org.apache.portals.logdir'). 2. By convention, require that all portlet applications write to log files with names prefixed by application name. 3. Provide a Tomcat 5.5 and Tomcat 6.0 compatible server listener class implementation that will dynamically set the logging directory system property before the portlet applications are started to the default Tomcat ./logs or specified directory. 4. Implement a deployment extension to the Jetspeed Maven plugins that configures the Tomcat 5.5 or Tomcat 6.0 server.xml file to add the required <Listener/> tag as a child of the <Engine/> tags, (if not already specified). 5. Extend the Jetspeed Maven deployment plugin configuration to add a jar, (jetspeed-logging), containing the listener to the Tomcat ./server/lib directory for 5.5 or ./lib directory for 6.0. 6. Initially document how to set the logging directory property for other web containers as part of the manual deployment process for Jetspeed and Portals Applications that conform to this approach. 7. Encourage contribution of similar auto configuration plugins for other web container implementations. This proposal was implemented as proposed in APA and J2, svn commits: 774028-774070. > Logging execptions on Tomcat 5.5 startup: cannot find /logs/pa.log > ------------------------------------------------------------------ > > Key: APA-9 > URL: https://issues.apache.org/jira/browse/APA-9 > Project: Portals Apps > Issue Type: Bug > Affects Versions: apa-demo-1.0 > Environment: Jetspeed 2.2, Tomcat 5.5.2[78], JDK 1.5, Linux > (issue does not appear in Tomcat 6.0.18) > Reporter: Randy Watler > Assignee: Randy Watler > Priority: Minor > Fix For: apa-demo-1.0 > > > The following exceptions are thrown into catalina.out on container startup > for demo and webcontent apps: > May 7, 2009 12:08:28 AM org.apache.catalina.startup.HostConfig deployWAR > INFO: Deploying web application archive webcontent.war > log4j:ERROR setFile(null,false) call failed. > java.io.FileNotFoundException: /logs/pa.log (No such file or directory) > at java.io.FileOutputStream.open(Native Method) > at java.io.FileOutputStream.<init>(FileOutputStream.java:179) > at java.io.FileOutputStream.<init>(FileOutputStream.java:102) > at org.apache.log4j.FileAppender.setFile(FileAppender.java:289) > at > org.apache.log4j.FileAppender.activateOptions(FileAppender.java:163) > at > org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256) > at > org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:132) > at > org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96) > at > org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654) > at > org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612) > at > org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:509) > at > org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415) > at > org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441) > at > org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470) > at org.apache.log4j.LogManager.<clinit>(LogManager.java:122) > at > org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) > at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209) > at > org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) > at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:704) > at > org.apache.catalina.core.ContainerBase.getLogger(ContainerBase.java:381) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4119) > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) > at > org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:831) > at > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:720) > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490) > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150) > at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) > at > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) > at > org.apache.catalina.core.StandardService.start(StandardService.java:448) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:700) > at org.apache.catalina.startup.Catalina.start(Catalina.java:552) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) > log4j:ERROR setFile(null,false) call failed. > java.io.FileNotFoundException: /logs/velocity.log (No such file or directory) > at java.io.FileOutputStream.open(Native Method) > at java.io.FileOutputStream.<init>(FileOutputStream.java:179) > at java.io.FileOutputStream.<init>(FileOutputStream.java:102) > at org.apache.log4j.FileAppender.setFile(FileAppender.java:289) > at > org.apache.log4j.FileAppender.activateOptions(FileAppender.java:163) > at > org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256) > at > org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:132) > at > org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96) > at > org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654) > at > org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612) > at > org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:533) > at > org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:417) > at > org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441) > at > org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470) > at org.apache.log4j.LogManager.<clinit>(LogManager.java:122) > at > org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) > at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209) > at > org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) > at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:704) > at > org.apache.catalina.core.ContainerBase.getLogger(ContainerBase.java:381) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4119) > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) > at > org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:831) > at > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:720) > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490) > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150) > at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) > at > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) > at > org.apache.catalina.core.StandardService.start(StandardService.java:448) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:700) > at org.apache.catalina.startup.Catalina.start(Catalina.java:552) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.