Skip to content

Commit cff6a29

Browse files
committed
Switch to log4j2 instead of logback for additional file logging
1 parent a8484b6 commit cff6a29

6 files changed

Lines changed: 96 additions & 57 deletions

File tree

pom.xml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<kotlin.version>1.5.20</kotlin.version>
2222
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
2323
<junit.jupiter.version>5.6.0</junit.jupiter.version>
24+
<log4j.version>2.14.1</log4j.version>
2425
</properties>
2526

2627
<distributionManagement>
@@ -55,9 +56,19 @@
5556
<version>${version.fabric8.client}</version>
5657
</dependency>
5758
<dependency>
58-
<groupId>ch.qos.logback</groupId>
59-
<artifactId>logback-classic</artifactId>
60-
<version>1.2.3</version>
59+
<groupId>org.apache.logging.log4j</groupId>
60+
<artifactId>log4j-api</artifactId>
61+
<version>${log4j.version}</version>
62+
</dependency>
63+
<dependency>
64+
<groupId>org.apache.logging.log4j</groupId>
65+
<artifactId>log4j-core</artifactId>
66+
<version>${log4j.version}</version>
67+
</dependency>
68+
<dependency>
69+
<groupId>org.apache.logging.log4j</groupId>
70+
<artifactId>log4j-slf4j-impl</artifactId>
71+
<version>${log4j.version}</version>
6172
</dependency>
6273
<dependency>
6374
<groupId>io.github.microutils</groupId>
@@ -174,6 +185,9 @@
174185
<mainClass>eu.openanalytics.shinyproxyoperator.MainKt</mainClass>
175186
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
176187
</manifest>
188+
<manifestEntries>
189+
<Multi-Release>true</Multi-Release>
190+
</manifestEntries>
177191
</archive>
178192
<descriptorRefs>
179193
<descriptorRef>jar-with-dependencies</descriptorRef>

src/main/kotlin/eu/openanalytics/shinyproxyoperator/Operator.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@
2020
*/
2121
package eu.openanalytics.shinyproxyoperator
2222

23-
import ch.qos.logback.classic.Level
24-
import ch.qos.logback.classic.Logger
2523
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
26-
import eu.openanalytics.shinyproxyoperator.controller.*
24+
import eu.openanalytics.shinyproxyoperator.controller.IReconcileListener
25+
import eu.openanalytics.shinyproxyoperator.controller.PodRetriever
26+
import eu.openanalytics.shinyproxyoperator.controller.ResourceListener
27+
import eu.openanalytics.shinyproxyoperator.controller.ResourceRetriever
28+
import eu.openanalytics.shinyproxyoperator.controller.ShinyProxyController
29+
import eu.openanalytics.shinyproxyoperator.controller.ShinyProxyEvent
30+
import eu.openanalytics.shinyproxyoperator.controller.ShinyProxyListener
2731
import eu.openanalytics.shinyproxyoperator.crd.DoneableShinyProxy
2832
import eu.openanalytics.shinyproxyoperator.crd.ShinyProxy
2933
import eu.openanalytics.shinyproxyoperator.crd.ShinyProxyList
@@ -48,8 +52,10 @@ import io.fabric8.kubernetes.client.utils.Serialization
4852
import kotlinx.coroutines.channels.Channel
4953
import kotlinx.coroutines.channels.SendChannel
5054
import mu.KotlinLogging
51-
import org.slf4j.LoggerFactory
55+
import org.apache.logging.log4j.core.config.Configurator
5256
import java.util.*
57+
import org.apache.logging.log4j.Level
58+
import kotlin.concurrent.schedule
5359
import kotlin.system.exitProcess
5460

5561

@@ -127,8 +133,8 @@ class Operator(client: NamespacedKubernetesClient? = null,
127133
}
128134
}
129135

130-
val rootLogger = LoggerFactory.getILoggerFactory().getLogger(Logger.ROOT_LOGGER_NAME) as Logger
131-
rootLogger.level = readConfigValue(logLevel, Level.DEBUG, "SPO_LOG_LEVEL", { Level.toLevel(it) })
136+
val level = readConfigValue(logLevel, Level.DEBUG, "SPO_LOG_LEVEL") { Level.toLevel(it) }
137+
Configurator.setRootLevel(level)
132138

133139
logger.info { "Running in ${this.mode} mode" }
134140

src/main/kotlin/eu/openanalytics/shinyproxyoperator/controller/ResourceListener.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,22 @@ class ResourceListener<T : HasMetadata>(private val channel: SendChannel<ShinyPr
4343
informer.addEventHandler(object : ResourceEventHandler<T> {
4444
override fun onAdd(resource: T) {
4545
logger.trace { "${resource.kind}::OnAdd ${resource.metadata.name}" }
46-
runBlocking { enqueueResource(resource) }
46+
runBlocking { enqueueResource("Add", resource) }
4747
}
4848

4949
override fun onUpdate(resource: T, newResource: T) {
5050
logger.trace { "${resource.kind}::OnUpdate ${resource.metadata.name}" }
51-
runBlocking { enqueueResource(newResource) }
51+
runBlocking { enqueueResource("Update", newResource) }
5252
}
5353

5454
override fun onDelete(resource: T, b: Boolean) {
5555
logger.trace { "${resource.kind}::OnDelete ${resource.metadata.name}" }
56-
runBlocking { enqueueResource(resource) }
56+
runBlocking { enqueueResource("Delete", resource) }
5757
}
5858
})
5959
}
6060

61-
private suspend fun enqueueResource(resource: T) {
61+
private suspend fun enqueueResource(trigger: String, resource: T) {
6262
val ownerReference = getShinyProxyOwnerRef(resource) ?: return
6363

6464
val shinyProxy = shinyProxyLister.namespace(resource.metadata.namespace)[ownerReference.name] ?: return
@@ -75,7 +75,7 @@ class ResourceListener<T : HasMetadata>(private val channel: SendChannel<ShinyPr
7575
return
7676
}
7777

78-
logger.debug { "${shinyProxy.logPrefix(shinyProxyInstance)} [Event/Update of component] [Component/${resource.kind}]" }
78+
logger.debug { "${shinyProxy.logPrefix(shinyProxyInstance)} [Event/${trigger} component] [Component/${resource.kind}]" }
7979
channel.send(ShinyProxyEvent(ShinyProxyEventType.RECONCILE, shinyProxy, shinyProxyInstance))
8080
}
8181

src/main/kotlin/eu/openanalytics/shinyproxyoperator/ingress/skipper/IngressListener.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,23 +48,23 @@ class IngressListener(private val channel: SendChannel<ShinyProxyEvent>,
4848
init {
4949
informer.addEventHandler(object : ResourceEventHandler<Ingress> {
5050
override fun onAdd(resource: Ingress) {
51-
logger.debug { "${resource.kind}::OnAdd ${resource.metadata.name}" }
52-
runBlocking { enqueueResource(resource) }
51+
logger.trace { "${resource.kind}::OnAdd ${resource.metadata.name}" }
52+
runBlocking { enqueueResource("Add", resource) }
5353
}
5454

5555
override fun onUpdate(resource: Ingress, newResource: Ingress) {
56-
logger.debug { "${resource.kind}::OnUpdate ${resource.metadata.name}" }
57-
runBlocking { enqueueResource(resource) }
56+
logger.trace { "${resource.kind}::OnUpdate ${resource.metadata.name}" }
57+
runBlocking { enqueueResource("Update", resource) }
5858
}
5959

6060
override fun onDelete(resource: Ingress, b: Boolean) {
61-
logger.debug { "${resource.kind}::OnDelete ${resource.metadata.name}" }
62-
runBlocking { enqueueResource(resource) }
61+
logger.trace { "${resource.kind}::OnDelete ${resource.metadata.name}" }
62+
runBlocking { enqueueResource("Delete", resource) }
6363
}
6464
})
6565
}
6666

67-
private suspend fun enqueueResource(resource: Ingress) {
67+
private suspend fun enqueueResource(trigger: String, resource: Ingress) {
6868
val replicaSetOwnerReference = getShinyProxyOwnerRefByKind(resource, "ReplicaSet") ?: return
6969
// TODO namespace
7070
val replicaSet = kubernetesClient.apps().replicaSets().inNamespace(resource.metadata.namespace).withName(replicaSetOwnerReference.name).get()
@@ -88,6 +88,7 @@ class IngressListener(private val channel: SendChannel<ShinyProxyEvent>,
8888
return
8989
}
9090

91+
logger.debug { "${shinyProxy.logPrefix(shinyProxyInstance)} [Event/${trigger} component] [Component/${resource.kind}]" }
9192
channel.send(ShinyProxyEvent(ShinyProxyEventType.RECONCILE, shinyProxy, shinyProxyInstance))
9293
}
9394

src/main/resources/log4j2.xml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Configuration status="WARN">
3+
<Appenders>
4+
<Console name="Console" target="SYSTEM_OUT">
5+
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-36.36logger{2.} - %msg%n"/>
6+
</Console>
7+
<RollingFile name="File" fileName="logs/operator.log"
8+
filePattern="logs/operator-%d{MM-dd-yyyy}-%i.log.gz">
9+
<PatternLayout pattern="%d [%t] %-5level %logger - %msg%n"/>
10+
<Policies>
11+
<SizeBasedTriggeringPolicy size="10 MB"/>
12+
</Policies>
13+
<DefaultRolloverStrategy max="10"/>
14+
</RollingFile>
15+
</Appenders>
16+
<Loggers>
17+
<!-- CONSOLE -->
18+
<Logger name="io.fabric8.kubernetes.client.informers" level="WARN" additivity="false">
19+
<AppenderRef ref="Console"/>
20+
</Logger>
21+
<Logger name="io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager" level="WARN" additivity="false">
22+
<AppenderRef ref="Console"/>
23+
</Logger>
24+
<Logger name="eu.openanalytics.shinyproxyoperator.controller.PodRetriever" level="WARN" additivity="false">
25+
<AppenderRef ref="Console"/>
26+
</Logger>
27+
<Logger name="eu.openanalytics.shinyproxyoperator.controller.ResourceRetriever" level="WARN" additivity="false">
28+
<AppenderRef ref="Console"/>
29+
</Logger>
30+
31+
<!-- File -->
32+
<Logger name="io.fabric8.kubernetes.client.informers" level="TRACE" additivity="false">
33+
<AppenderRef ref="File"/>
34+
</Logger>
35+
<!-- Keep at WARN-->
36+
<Logger name="io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager" level="TRACE" additivity="false">
37+
<AppenderRef ref="File"/>
38+
</Logger>
39+
<Logger name="eu.openanalytics.shinyproxyoperator.controller.PodRetriever" level="DEBUG" additivity="false">
40+
<AppenderRef ref="File"/>
41+
</Logger>
42+
<Logger name="eu.openanalytics.shinyproxyoperator.controller.ResourceRetriever" level="DEBUG"
43+
additivity="false">
44+
<AppenderRef ref="File"/>
45+
</Logger>
46+
47+
<!-- Root Logger -->
48+
<Root level="DEBUG">
49+
<AppenderRef ref="Console"/>
50+
<AppenderRef ref="File"/>
51+
</Root>
52+
53+
</Loggers>
54+
</Configuration>

src/main/resources/logback.xml

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)