Debugging Spring configuration Debugging Spring configuration spring spring

Debugging Spring configuration


Yes, Spring framework logging is very detailed, You did not mention in your post, if you are already using a logging framework or not. If you are using log4j then just add spring appenders to the log4j config (i.e to log4j.xml or log4j.properties), If you are using log4j xml config you can do some thing like this

<category name="org.springframework.beans">    <priority value="debug" /></category>

or

<category name="org.springframework">    <priority value="debug" /></category>

I would advise you to test this problem in isolation using JUnit test, You can do this by using spring testing module in conjunction with Junit. If you use spring test module it will do the bulk of the work for you it loads context file based on your context config and starts container so you can just focus on testing your business logic. I have a small example here

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:springContext.xml"})@Transactionalpublic class SpringDAOTest {    @Autowired    private SpringDAO dao;    @Autowired    private ApplicationContext appContext;    @Test    public void checkConfig()    {        AnySpringBean bean =  appContext.getBean(AnySpringBean.class);        Assert.assertNotNull(bean);    }}

UPDATE

I am not advising you to change the way you load logging but try this in your dev environment, Add this snippet to your web.xml file

<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>

UPDATE log4j config file


I tested this on my local tomcat and it generated a lot of logging on application start up. I also want to make a correction: use debug not info as @Rayan Stewart mentioned.

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">        <param name="Threshold" value="debug" />        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern"                value="%d{HH:mm:ss} %p [%t]:%c{3}.%M()%L - %m%n" />        </layout>    </appender>    <appender name="springAppender" class="org.apache.log4j.RollingFileAppender">         <param name="file" value="C:/tomcatLogs/webApp/spring-details.log" />         <param name="append" value="true" />         <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern"                value="%d{MM/dd/yyyy HH:mm:ss}  [%t]:%c{5}.%M()%L %m%n" />        </layout>    </appender>    <category name="org.springframework">        <priority value="debug" />    </category>    <category name="org.springframework.beans">        <priority value="debug" />    </category>    <category name="org.springframework.security">        <priority value="debug" />    </category>    <category        name="org.springframework.beans.CachedIntrospectionResults">        <priority value="debug" />    </category>    <category name="org.springframework.jdbc.core">        <priority value="debug" />    </category>    <category name="org.springframework.transaction.support.TransactionSynchronizationManager">        <priority value="debug" />    </category>    <root>        <priority value="debug" />        <appender-ref ref="springAppender" />        <!-- <appender-ref ref="STDOUT"/>  -->    </root></log4j:configuration>


If you use Spring Boot, you can also enable a “debug” mode by starting your application with a --debug flag.

java -jar myapp.jar --debug

You can also specify debug=true in your application.properties.

When the debug mode is enabled, a selection of core loggers (embedded container, Hibernate, and Spring Boot) are configured to output more information. Enabling the debug mode does not configure your application to log all messages with DEBUG level.

Alternatively, you can enable a “trace” mode by starting your application with a --trace flag (or trace=true in your application.properties). Doing so enables trace logging for a selection of core loggers (embedded container, Hibernate schema generation, and the whole Spring portfolio).

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html