You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Laurie Harper <la...@holoweb.net> on 2008/04/01 12:50:58 UTC

Re: [S2] Logging Issues

You can't have log4j route exception errors to the log file if you don't 
catch the exception and pass it to log4j... If you allow the exception 
to propagate all the way up, it will be logged by the container. Short 
story: if you want to control where something gets logged to, you need 
to control how it is logged.

L.

Kelly.Graus wrote:
> Hello,
> 
> I am writing an application using Struts (2.0.11), Spring (2.5.1), and
> Hibernate (3.2.6), running on Tomcat (6.0.13).  We have a legacy webapp
> running on Tomcat that outputs some important information to the default
> Tomcat logs.  We aren't really in a position to change that application, so
> we're trying to update our new webapp to put all messages in a different log
> file.  I'm trying to do this using log4j (1.2.15).
> 
> So far, I can add messages to the new log in my java code.  I am also
> getting freemarker.cache debug messages in the new log.  However, all other
> messages are still being put in the default Tomcat logs.  For example, if
> the database I'm trying to access closes its connection and I don't catch
> the exception that is thrown, it gets printed to the screen, and put in the
> catalina log.  I would like that exception to go in the new log file instead
> (and yes, eventually I will catch the exception and have struts display a
> nicer error message for the user).
> 
> Below are the relevant parts of my web.xml, and my log4j.properties file. 
> Any help would be greatly appreciated!
> 
> Thanks!
> 
> Kelly
> 
> 
> [web.xml]
> [snip]
> <context-param>
>   	<description>This context parameter specifies the name and location
>   	of the log4j properties file.</description>
>   	<param-name>log4jConfigLocation</param-name>
>   	<param-value>/WEB-INF/classes/log4j.properties</param-value> 
>   </context-param>
> <filter>
>     <filter-name>struts2-cleanup</filter-name>
>    
> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
>   </filter>
>   <filter>
>     <filter-name>sitemesh</filter-name>
>    
> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
>   </filter>
>   <filter>
>     <filter-name>struts2</filter-name>
>    
> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
>   </filter>
>   
>   <filter-mapping>
>     <filter-name>struts2-cleanup</filter-name>
>     <url-pattern>/*</url-pattern>
>   </filter-mapping>
>   <filter-mapping>
>     <filter-name>sitemesh</filter-name>
>     <url-pattern>/*</url-pattern>
>   </filter-mapping>
>   <filter-mapping>
>     <filter-name>struts2</filter-name>
>     <url-pattern>/*</url-pattern>
>   </filter-mapping>
>   
>   <listener>
>    
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>   </listener>
>   
>   <listener>
>   
> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
>   </listener>
> [snip]
> 
> [log4j.properties]
> log4j.rootLogger=DEBUG, rollingFileAppender
> 
> # Rolling file Appender
> log4j.appender.rollingFileAppender=org.apache.log4j.RollingFileAppender
> log4j.appender.rollingFileAppender.File=${catalina.home}/logs/lessonDownloader.log
> log4j.appender.rollingFileAppender.MaxFileSize=1024KB
> log4j.appender.rollingFileAppender.MaxBackupIndex=10
> log4j.appender.rollingFileAppender.layout=org.apache.log4j.PatternLayout
> log4j.appender.rollingFileAppender.layout.ConversionPattern=%d %p [%c] -
> %m%n*
> 
> # Control logging for other packages
> log4j.logger.org.apache.commons=WARN
> log4j.logger.org.apache.struts2=WARN
> log4j.logger.org.springframework=WARN
> log4j.logger.org.hibernate=WARN
> log4j.logger.org.apache.jasper=WARN
> log4j.logger.org.apache.catalina=WARN
> log4j.logger.com.opensymphony.xwork2=WARN
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: [S2] Logging Issues

Posted by Kelly Graus <ke...@toltech.net>.
Hi Laurie,

Thanks for the reply!  I found the "swallowOutput" attribute in the 
Tomcat context that caused the exceptions to be placed in my application 
log. However, I'm now setting up global exception mapping in struts so I 
can handle unexpected problems without showing the user a stack trace.  
Making no changes other than adding a single global exception mapping 
for java.lang.Exception allows me to display a better error page to the 
user, but from reading the documentation I would have though that this 
would break my logging, since I didn't set the logEnabled property on 
the exception interceptor to true.  However, all logging seems to work 
correctly.  Do you know why this is?

Thanks!

Kelly

Laurie Harper wrote:
> You can't have log4j route exception errors to the log file if you 
> don't catch the exception and pass it to log4j... If you allow the 
> exception to propagate all the way up, it will be logged by the 
> container. Short story: if you want to control where something gets 
> logged to, you need to control how it is logged.
>
> L.
>
> Kelly.Graus wrote:
>> Hello,
>>
>> I am writing an application using Struts (2.0.11), Spring (2.5.1), and
>> Hibernate (3.2.6), running on Tomcat (6.0.13).  We have a legacy webapp
>> running on Tomcat that outputs some important information to the default
>> Tomcat logs.  We aren't really in a position to change that 
>> application, so
>> we're trying to update our new webapp to put all messages in a 
>> different log
>> file.  I'm trying to do this using log4j (1.2.15).
>>
>> So far, I can add messages to the new log in my java code.  I am also
>> getting freemarker.cache debug messages in the new log.  However, all 
>> other
>> messages are still being put in the default Tomcat logs.  For 
>> example, if
>> the database I'm trying to access closes its connection and I don't 
>> catch
>> the exception that is thrown, it gets printed to the screen, and put 
>> in the
>> catalina log.  I would like that exception to go in the new log file 
>> instead
>> (and yes, eventually I will catch the exception and have struts 
>> display a
>> nicer error message for the user).
>>
>> Below are the relevant parts of my web.xml, and my log4j.properties 
>> file. Any help would be greatly appreciated!
>>
>> Thanks!
>>
>> Kelly
>>
>>
>> [web.xml]
>> [snip]
>> <context-param>
>>       <description>This context parameter specifies the name and 
>> location
>>       of the log4j properties file.</description>
>>       <param-name>log4jConfigLocation</param-name>
>>       <param-value>/WEB-INF/classes/log4j.properties</param-value>   
>> </context-param>
>> <filter>
>>     <filter-name>struts2-cleanup</filter-name>
>>    
>> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> 
>>
>>   </filter>
>>   <filter>
>>     <filter-name>sitemesh</filter-name>
>>    
>> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> 
>>
>>   </filter>
>>   <filter>
>>     <filter-name>struts2</filter-name>
>>    
>> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
>>
>>   </filter>
>>     <filter-mapping>
>>     <filter-name>struts2-cleanup</filter-name>
>>     <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>>   <filter-mapping>
>>     <filter-name>sitemesh</filter-name>
>>     <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>>   <filter-mapping>
>>     <filter-name>struts2</filter-name>
>>     <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>>     <listener>
>>    
>> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
>>
>>   </listener>
>>     <listener>
>>   
>> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
>>
>>   </listener>
>> [snip]
>>
>> [log4j.properties]
>> log4j.rootLogger=DEBUG, rollingFileAppender
>>
>> # Rolling file Appender
>> log4j.appender.rollingFileAppender=org.apache.log4j.RollingFileAppender
>> log4j.appender.rollingFileAppender.File=${catalina.home}/logs/lessonDownloader.log 
>>
>> log4j.appender.rollingFileAppender.MaxFileSize=1024KB
>> log4j.appender.rollingFileAppender.MaxBackupIndex=10
>> log4j.appender.rollingFileAppender.layout=org.apache.log4j.PatternLayout
>> log4j.appender.rollingFileAppender.layout.ConversionPattern=%d %p [%c] -
>> %m%n*
>>
>> # Control logging for other packages
>> log4j.logger.org.apache.commons=WARN
>> log4j.logger.org.apache.struts2=WARN
>> log4j.logger.org.springframework=WARN
>> log4j.logger.org.hibernate=WARN
>> log4j.logger.org.apache.jasper=WARN
>> log4j.logger.org.apache.catalina=WARN
>> log4j.logger.com.opensymphony.xwork2=WARN
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org