Removed
I was for a good time wondering why my Log4j is logging only the messages coming from my classes but not frameworks like Spring, JDBC Template, CSveed. Every think was well configured, no error messages but I see framework messages only in the server.log.
So finally, I found
the right steps to do.
Step 1:
Exclude Logging from JBoss.
This previous article explains how to do.
So here is my jboss-deployment-structure.xml :
1
2
3
4
5
6
7
8
9
10
11
| <jboss-deployment-structure>
<deployment>
<!-- Add this line in the server lauch parameter : -Dorg.jboss.as.logging.per-deployment=false -->
<exclusions>
<module name="org.apache.log4j"/>
<module name="org.apache.commons.logging"/>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
</jboss-deployment-structure>
|
Step 2:
Put you log4j.xml or log4j.properties in your classpath. In a Maven project, it should be under "\src\main\resources". Othrwhise, you can fix the classpath in the web.xml
1
2
3
4
5
6
7
8
| <listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/main/resources/META-INF/log4j.xml</param-value>
</context-param>
|
Step 3:
So Now, we need to add the required jar, AND Exclude some Jars. In the pom.xml,
we need to exclude commons-logging from Spring-context jar and we need to add slf4j-api, slf4j-log4j12, jcl-over-slf4j, log4j.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-log4j12.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j-log4j12.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
|
So this step was the latest and Important step that I have discovered and which blocked my logging before.
You are a god sir!
ReplyDeleteI've being fighting for months to make this work and you finally made it happen!
Jboss EAP 6.4.1
Thank you!!!!
Thanks, great info!!! I had forgoten the config listener.
ReplyDeleteI would like to add that you can avoid to use "-Dorg.jboss.as.logging.per-deployment=false" by excluding all subsytem in deployment structure
This comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDelete