1

This is my bean class AppLogger.java

public class AppLogger {

    private String logMessage;

    public String getLogMessage() {
        return logMessage;
    }

    public void setLogMessage(String logMessage) {
        this.logMessage = logMessage;
    }
}

My log4j.properties

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Root logger option
log4j.rootLogger=debug, file, stdout

My Log4j.xml

<bean id="appLogger" class="com.sort.model.AppLogger">
   <property name="message" value="Logger!"/>
   </bean>

My Web.xml

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/Log4J.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

My controller, where I am trying to log a sample message.

public class BasicFormController {

    private static final Logger logger = Logger.getLogger(BasicFormController.class);

    @ModelAttribute("evaluation")
    protected List<String> referenceData(HttpServletRequest request) throws Exception {

        logger.info("creating a message");
        List<String> evaluation = new ArrayList<String>();
        evaluation.add("Evaluated");
        evaluation.add("Not Evaluated");
        return evaluation;

    }
}

My servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- Enable annotation driven controllers, validation etc... -->
    <mvc:annotation-driven />
    <context:component-scan base-package="com.sort.controller" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value></value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    </bean>
    </beans>

I have log4j-1.2.14.jar in my build path. Now the problem is, I am getting 404 error. The app runs well without all these Log4j relevant matter.
Can you please help me out of this?
Or can someone guide me to a proper example where they demonstrate the logging of a Spring MVC project?

Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Freakyuser
  • 2,774
  • 17
  • 45
  • 72
  • 1
    I looks like your `log4jConfigLocation` should be `/.../log4j.properties` as for your `Log4j.xml` I don't understand what is this - that's everything but log4j configuration file. http://stackoverflow.com/questions/4400583/initializing-log4j-with-spring – Boris Treukhov Dec 11 '12 at 12:36
  • @BorisTreukhov Thank you for the quick reply. I tried this in my web.xml `../conf/log4j.properties` but still its not working. – Freakyuser Dec 11 '12 at 13:41
  • What is not working? The fact that that you have 404 error has nothing to do with the logging it's rather a dispatcher servlet/mapping/controller problem. Is your app starting up, is Spring container initialized? When it's initalized do you get any bean initialization exceptions? – Boris Treukhov Dec 11 '12 at 14:38
  • @BorisTreukhov As I mentioned earlier, there is something going wrong whenever I add something new, for example a jar file, and not because there is some other error in the app. Now I have given my whole project relevant to logger which I added. The app is starting up without this but not with this. Anyway I have posted my servlet.xml. – Freakyuser Dec 12 '12 at 07:49
  • @BorisTreukhov http://stackoverflow.com/questions/13841681/integrating-logger-with-spring-template-mvc-project – Freakyuser Dec 12 '12 at 14:43

1 Answers1

1

I used the the xml approach and logged the code flow. Thanks for all your responses.

Here is the log4j.xml I have used...

<?xml version="1.0" encoding="UTF-8" ?>
<log4j:configuration debug="true">

    <appender name="ROLL" class="org.apache.log4j.RollingFileAppender">
        <!-- The active file to log to -->
        <param name="file" value="D:/portal.log" />
        <param name="append" value="true" />
        <param name="encoding" value="UTF-8" />

        <rollingPolicy class="org.apache.log4j.TimeBasedRollingPolicy">
            <!-- The file to roll to, this is a fairly intelligent parameter, if the 
                file ends in .gz, it gzips it, based on the date stamp it rolls at that time, 
                default is yyyy-MM-dd, (rolls at midnight) See: http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html -->
            <param name="FileNamePattern" value="D:/portal.%d.log.gz" />
        </rollingPolicy>

        <layout class="org.apache.log4j.PatternLayout">
            <!-- The log message pattern -->
            <param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
        </layout>
    </appender>

    <!-- Loggers to filter out various class paths -->

    <logger name="org.hibernate.engine.loading.LoadContexts"
        additivity="false">
        <level value="error" />
        <appender-ref ref="ROLL" />
    </logger>

    <!-- Debugging loggers -->

    <!-- Uncomment to enable debug on calpoly code only -->
    <!-- <logger name="edu.calpoly"> <level value="debug"/> <appender-ref ref="ROLL" 
        /> </logger> -->

    <root>
        <priority value="info" />
        <appender-ref ref="ROLL" />
    </root>

</log4j:configuration>

I deleted the properties file and dropped that approach.

Freakyuser
  • 2,774
  • 17
  • 45
  • 72