2011-11-07 105 views
0

我实现log4j的日志记录在我的JSF application.My log4j.properties文件是这样的的log4j DEBUG日志记录到catalina.out中而不是在文件中UNIX

log4j.rootLogger=DEBUG, stdout, fileout 

#----------------------------- All logging to console----------------------------- 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%d] [%t] %5p %c{1}:%L - %m%n 

# ------------------------------ All Logging to File------------------------------ 

log4j.appender.fileout = org.apache.log4j.RollingFileAppender 
log4j.appender.fileout.layout = org.apache.log4j.PatternLayout 
log4j.appender.fileout.layout.ConversionPattern = [%d] [%t] %5p %c{1}:%L - %m%n 
log4j.appender.fileout.File = ${catalina.home}/logs/Portal-alllogs.log 
log4j.appender.fileout.MaxFileSize =2MB 
log4j.appender.fileout.MaxBackupIndex =2 

现在我得到我的应用程序下面的异常因为DB下跌

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01034: ORACLE not available 
     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 
     at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:361) 
     at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:485) 
     at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 
     at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 
     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) 
     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) 
WARNING: Failed to register in JMX: javax.naming.NamingException: Cannot create PoolableConnectionFactory (ORA-01034: ORACLE not available 

的问题是上述例外catalina.out的显示出来,而不是在我的日志文件

可以在任何请解释为什么? 在此先感谢

更新:我刚才看到这篇日志,同时部署WAR文件

WARNING: Unexpected exception resolving reference 

    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01034: ORACLE not available 
    ORA-27101: shared memory realm does not exist 
    Linux-x86_64 Error: 2: No such file or directory 
    ) 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 
      at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 
      at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getLogWriter(BasicDataSource.java:1098) 
      at org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.createDataSource(BasicDataSourceFactory.java:350) 
      at org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.getObjectInstance(BasicDataSourceFactory.java:156) 
      at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143) 
      at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) 
      at org.apache.naming.NamingContext.lookup(NamingContext.java:826) 
      at org.apache.naming.NamingContext.lookup(NamingContext.java:145) 
      at org.apache.naming.NamingContext.lookup(NamingContext.java:814) 
      at org.apache.naming.NamingContext.lookup(NamingContext.java:159) 
      at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1021) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159) 
      at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1021) 
      at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:631) 
      at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:237) 
      at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
      at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103) 
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812) 
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787) 
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607) 
      at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932) 
      at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932) 
      at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723) 
      at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) 
      at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322) 
      at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
      at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
      at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 
      at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379) 
      at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:324) 
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041) 
      at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774) 
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 
      at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) 
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
      at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
      at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) 
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
      at org.apache.catalina.startup.Catalina.start(Catalina.java:620) 
      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:597) 
      at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) 
      at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431) 

回答

0

你确定这个异常实际上是LOGGED到标准输出,而不仅仅是打印到标准输出?你能发现转换模式在你的控制台上的工作吗?

+0

我更新了我的问题。当上传我的WAR本身我得到了上述例外。 – Sreeram

+0

我仍然没有看到它使用“log4j.appender.stdout.layout.ConversionPattern = [%d] [%t]%5p%c {1}:%L - %m%n”。如果我是你,我会尽量确保webapp先部署并正确启动,并担心后面的日志记录。 – PapaFreud

+0

是否因为在上传WAR期间我收到异常,我无法在日志文件中看到它? – Sreeram

0

这可能是一个权限问题 - 检查$ {}的catalina.home的所有者和权限/日志目录。

+0

感谢您的回复。所有的文件夹权限都是-rw-r ----在日志目录中。所有剩余的日志都显示在文件和catalina.out.but中但我的异常不会显示在我的日志中文件 – Sreeram

0

你是否在你的代码中捕获了这个异常并处理它,那是日志?如果不是,你为什么期望在你的日志中出现?

+0

@ bpgergo - 我在我的应用程序中使用tomcat连接池,我在我的应用程序的context.xml中声明它。但是现在因为我的数据库关闭了,这个异常正在抛出。我正在捕获这个异常,但是在日志我没有看到我的Java文件从哪里扔掉。 – Sreeram

0

如果它不是权限问题:请验证$ {catalina.home}是否解析到您认为它的位置 - 尝试使用“原始”绝对路径来排除此问题。

+0

@ PapaFreud - 谢谢你的回复。$ {catalina.home}解析正确,因为我只能在$ {catalina.home}/logs目录中看到我的日志文件 – Sreeram

相关问题