Unable to log to console with log4j
aznan Mar 22, 2013 11:36 AMHi!
I have a web service with log4j configuration outside of the war file. Loggin to a file using org.apache.log4j.DailyRollingFileAppender works fine, but switching to a org.apache.log4j.ConsoleAppender causes everything to freeze while using 100% CPU. This is our setup:
pom.xml
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.6.1</version> </dependency>
jboss-deployment-structure.xml
<jboss-deployment-structure> <deployment> <dependencies> ... </dependencies> <exclusions> <module name="org.apache.log4j"/> <module name="org.slf4j"/> <module name="org.slf4j.jcl-over-slf4j"/> </exclusions> </deployment> </jboss-deployment-structure>
web.xml
<display-name>my-service-${version}</display-name> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <!-- Extends org.springframework.web.util.Log4jConfigListener, exports display-name as system property "webapp-name" --> <listener-class>com.myservice.log.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>file:${settings.home}/my-service-logging-${version}.xml</param-value> </context-param>
my-service-logging-1.0-SNAPSHOT.xml in C:\settings\ ("settings.home")
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- APPENDERS --> <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} %-5p %m at %C.%M(%F:%L)%n" /> </layout> </appender> <!--<appender name="RollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${jboss.server.log.dir}/${webapp-name}.log"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} %-5p %m at %C.%M(%F:%L)%n"/> </layout> </appender>--> <logger name="com.myservice"> <level value="debug"/> </logger> <logger name="org.springframework"> <level value="debug"/> </logger> <logger name="org.apache"> <level value="debug"/> </logger> <!-- CONFIG --> <root> <priority value="debug" /> <appender-ref ref="ConsoleAppender" /> <!-- <appender-ref ref="RollingFileAppender" /> --> </root> </log4j:configuration>
So, when I use the RollingFileAppender everything works fine. If I try to use the ConsoleAppender, when deploying, the last bit of output I get is this:
14:57:45,522 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/my-service-1.0-SNAPSHOT]] Initializing log4j from [file:C:/settings/my-service-logging-1.0-SNAPSHOT.xml] 14:57:45,600 FINE [javax.enterprise.resource.webcontainer.jsf.config] ConfigureListener.contextInitialized(/my-service-1.0-SNAPSHOT) 14:57:45,600 INFO [stdout] 2013-03-22 14:57:45,600 DEBUG ConfigureListener.contextInitialized(/my-service-1.0-SNAPSHOT) at ?.?(?:?)
Followed by 115 lines of this:
2013-03-22 14:57:45,600 DEBUG ConfigureListener.contextInitialized(/my-service-1.0-SNAPSHOT) at ?.?(?:?)
After which my IDE (IntelliJ 12) hangs and it and the server (JBoss 7.0.1) takes turns att using the CPU 100%.
Does anyone have any idea of what is happening?