0
votes

I am Using Log4j.xml for logging for my system , I ave two projects , oneis a spring project and another is a normal java project ,

I have log4j.xml configured for both projcts , the pblm is , only spring injected logs are getting written in log file , and the normal java logs is not getting written in log file , can u help me what is the exact pblm , and where am i doing wrong??

log4j.xml `

    <appender name="scoringenine.trace" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/logs/scoringengine/Trace.log" />
        <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d | %5p %X{SessionID} %t %n %l : %m  %n%n%n" /> 
        </layout>
        </appender>  
    <appender name="util.trace" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/logs/util/Util.log" />
        <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d | %5p %X{SessionID} %t %n %l : %m  %n%n%n" /> 
        </layout>
        </appender>
<category name="com.core" additivity="true">
        <priority value="info" />
        <appender-ref ref="scoringenine.trace"/>
    </category> 
<category name="com.util" additivity="true">
        <priority value="info" />
        <appender-ref ref="util.trace"/>
    </category> 

`

web.xml `

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/config/spring/applicationcontext.xml
    </param-value>
  </context-param>
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.xml</param-value>
  </context-param>
  <context-param>
    <param-name>log4jExposeWebAppRoot</param-name>
    <param-value>false</param-value>
  </context-param>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
    <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>

spring.xml

<bean id="mqLogger" class="org.apache.log4j.Logger" factory-method="getLogger">
        <constructor-arg value="com.*.mq"></constructor-arg>
    </bean>

`

My java

`

import org.apache.log4j.Logger;
    Class Utils{
    private static Logger logger = Logger.getLogger(Utils.class.getName());
    logger.log("inside utils");
    }

`

i have log4j , slflog4j , commons-lang.jar in my classpath This looger is not printing (Util.log) util.trace, appender not logging in log file , where as spring injected logs (Trace.log) scorengine.trace appender are logging...

1

1 Answers

0
votes

LogFactory is a Apache Commons Logging factory, since a different framework. You need to instanciate you logger like this:

private static final Logger LOG = Logger.getLogger(Utils.class);

Make sure you have defined this import:

import org.apache.log4j.Logger;