Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logging Spring bean initialization with Log4J

When I run my application, it stops when beans are initializing but doesn't show any logs entries. So I don't know what happened:

Log4j.properties

log4j.rootLogger=DEBUG, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
org.springframework=DEBUG
org.springframework.beans.factory.support=DEBUG
log4j.logger.org.springframework.beans.factory.support=DEBUG
log4j.logger.org.springframework.beans=DEBUG
log4j.category.org.springframework.beans.factory=DEBUG

log4j.logger.org.springframework=DEBUG

log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug
log4j.logger.org.hibernate.type=trace 
log4j.additivity.org.hibernate.SQL=false
log4j.logger.org.hibernate.transaction=debug
log4j.logger.java.sql.Statement=DEBUG

log4j.appender.stdout.layout.ConversionPattern=%d %t %C{1}- %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${log4j.appender.R.File}
log4j.appender.R.MaxFileSize=2MB
log4j.appender.R.MaxBackupIndex=0
log4j.appender.R.Append=true
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %t (%l) - %m%n

I want to get something like:

"BeanName" initialized 
"BeanName" initialized
etc...

So then I would know where the initialization stopped. Is it possible to get such an output in the logs, when beans are initializing?

like image 507
Mateusz Avatar asked Aug 13 '14 12:08

Mateusz


2 Answers

You need to set "org.springframework.beans.factory.support.DefaultListableBeanFactory" to debug level. The output looks something like this:

... - Creating instance of bean ...
... - Finished creating instance of bean  ...

Update:

Add this to log4j.properties:

log4j.logger.org.springframework.beans.factory.support.DefaultListableBeanFactory=DEBUG

Keep in mind that Spring is using the commons-logging framework, therefore these lines will not appear in your Log4J logs. To redirect them use SLF4J. Add slf4j-api.jar, jcl-over-slf4j.jar, slf4j-log4j12.jar and log4j.jar to your lib directory and remove commons-logging.jar from it.

like image 184
Stefan Avatar answered Oct 13 '22 16:10

Stefan


add to your log4j xml (check if you already have one with lavel ERROR, change it either INFO or DEBUG

<logger name="org.springframework">
        <level value="INFO" />
</logger>
like image 3
Pravin Bansal Avatar answered Oct 13 '22 16:10

Pravin Bansal