Log4j Logger for Struts 2 Except Interceptor

Which logger do I list in my log4j.xml to catch raw struts 2 exceptions?

I have the following code declared in my struts.xml:

<package name="default" extends="struts-default">
   <interceptor-stack name="defaultStack">
      <interceptor-ref name="timer"/> 
  <interceptor-ref name="logger"/> 
      <interceptor-ref name="exception">
            <param name="logEnabled">true</param>
            <param name="logCategory">error.unhandled</param>
            <param name="logLevel">WARN</param>
      </interceptor-ref>
   </interceptor-stack>
</package>

In my log4j.xml file, I have the following logger declared:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p [%c] - %C{1}.%M(%L) | %m%n"/>
    </layout>
</appender>
<logger name="error.unhandled">
    <level value="DEBUG"/>
    <appender-ref ref="CONSOLE" />
</logger>

However, when Struts throws an exception, it does not log log4j properly. I know that my log4j.xml is processed correctly, since I can manually create a java class with a logger called "error.unhandled" and write ERROR messages directly to it. A colleague also suggested that I should try to catch log4j.logger.error.unhandled logger, but that didn't work either.

Which logger uses Struts 2 to catch an exception?

+5
3

WARN . ERROR, , , WARN, INFO DEBUG log4j.xml.

, WARN, , , ERROR.
0

, . , , .

: https://cwiki.apache.org/WW/exception-handling.html

, Struts 2, struts.xml.

<interceptors>
  <interceptor-stack name="appDefaultStack">
    <interceptor-ref name="defaultStack">
     <param name="exception.logEnabled">true</param>
     <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>
 </interceptor-stack>
</interceptors>

<default-interceptor-ref name="appDefaultStack" />
+4

Your registrar in log4.xmlhas its own threshold set to ERROR, so nothing written below this level will not be recorded. Your location configuration is set to log at a level WARNlower ERROR.

You should probably lower the threshold in log4j.xml loggerto WARNto get something.

0
source

All Articles