From 568bdc4629fdc7e1ea17190907a407a3e406f64e Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <code@dgerhardt.net>
Date: Mon, 13 Aug 2018 16:55:55 +0200
Subject: [PATCH] Replace Log4j with Logback

Support for java system properties to tune logging have been added:
* arsnova.log.exceptions
* arsnova.log.level
* arsnova.log.level.root
* arsnova.log.level.spring
* arsnova.log.properties
---
 pom.xml                         | 10 ++++++---
 src/main/resources/logback.xml  | 39 +++++++++++++++++++++++++++++++++
 src/main/webapp/WEB-INF/web.xml |  4 ----
 3 files changed, 46 insertions(+), 7 deletions(-)
 create mode 100644 src/main/resources/logback.xml

diff --git a/pom.xml b/pom.xml
index c101484e3..e92086cc7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -195,11 +195,15 @@
 		</dependency>
 		<dependency>
 			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-log4j12</artifactId>
+			<artifactId>jcl-over-slf4j</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.janino</groupId>
+			<artifactId>janino</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.ektorp</groupId>
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 000000000..21fc14439
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,39 @@
+<configuration>
+	<if condition='isDefined("arsnova.log.properties")'>
+		<then>
+			<property file="${arsnova.log.properties}" />
+		</then>
+	</if>
+	<if condition='!isDefined("arsnova.log.level")'>
+		<then>
+			<property name="arsnova.log.level" value="${arsnova.log.level.root:-INFO}" />
+		</then>
+	</if>
+	<if condition='!isDefined("arsnova.log.level.spring")'>
+		<then>
+			<property name="arsnova.log.level.spring" value="${arsnova.log.level.root:-INFO}" />
+		</then>
+	</if>
+
+	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d{HH:mm:ss.SSS} %highlight(%-5level) %logger{36} - %msg%n%ex{${arsnova.log.exceptions:-short}}</pattern>
+		</encoder>
+	</appender>
+
+	<root level="${arsnova.log.level.root:-INFO}">
+		<appender-ref ref="STDOUT" />
+	</root>
+
+	<logger name="de.thm.arsnova" level="${arsnova.log.level}" />
+	<logger name="org.springframework" level="${arsnova.log.level.spring}" />
+
+	<logger name="com.corundumstudio.socketio" level="WARN" />
+	<logger name="com.corundumstudio.socketio.handler.AuthorizeHandler" level="OFF" />
+	<logger name="com.corundumstudio.socketio.handler.WrongUrlHandler" level="ERROR" />
+	<logger name="io.netty" level="WARN" />
+	<logger name="io.netty.channel.DefaultChannelPipeline" level="ERROR" />
+	<logger name="org.pac4j.oauth.profile" level="WARN" />
+	<logger name="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" level="WARN" />
+	<logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="WARN" />
+</configuration>
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 3195f1d88..12a4fd768 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -15,10 +15,6 @@
 			de.thm.arsnova.config.SecurityConfig
 		</param-value>
 	</context-param>
-	<context-param>
-		<param-name>log4jConfigLocation</param-name>
-		<param-value>/WEB-INF/classes/log4j.properties</param-value>
-	</context-param>
 	<servlet>
 		<servlet-name>arsnova</servlet-name>
 		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-- 
GitLab