Skip to content

Commit 6955b01

Browse files
darioseidloshai
authored andcommitted
Add support for Markers; convert tests to Log4j2 (#48)
* Add support to KLogger to log with markers * Add tests for logging with markers Only tests that the output is unaffected. * Convert tests to Log4j2 (with SLF4J bindings) * Add marker to pattern layout and test for occurrences * Set Kotlin compatibility to 1.1 to allow type aliases
1 parent 0a124b3 commit 6955b01

File tree

18 files changed

+506
-70
lines changed

18 files changed

+506
-70
lines changed

kotlin-logging-common/src/main/kotlin/mu/KLogger.kt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,54 @@ expect interface KLogger {
5454
* Lazy add a log message with throwable payload if isErrorEnabled is true
5555
*/
5656
fun error(t: Throwable?, msg: () -> Any?)
57+
58+
/**
59+
* Lazy add a log message with a marker if isTraceEnabled is true
60+
*/
61+
fun trace(marker: Marker?, msg: () -> Any?)
62+
63+
/**
64+
* Lazy add a log message with a marker if isDebugEnabled is true
65+
*/
66+
fun debug(marker: Marker?, msg: () -> Any?)
67+
68+
/**
69+
* Lazy add a log message with a marker if isInfoEnabled is true
70+
*/
71+
fun info(marker: Marker?, msg: () -> Any?)
72+
73+
/**
74+
* Lazy add a log message with a marker if isWarnEnabled is true
75+
*/
76+
fun warn(marker: Marker?, msg: () -> Any?)
77+
78+
/**
79+
* Lazy add a log message with a marker if isErrorEnabled is true
80+
*/
81+
fun error(marker: Marker?, msg: () -> Any?)
82+
83+
/**
84+
* Lazy add a log message with a marker and throwable payload if isTraceEnabled is true
85+
*/
86+
fun trace(marker: Marker?, t: Throwable?, msg: () -> Any?)
87+
88+
/**
89+
* Lazy add a log message with a marker and throwable payload if isDebugEnabled is true
90+
*/
91+
fun debug(marker: Marker?, t: Throwable?, msg: () -> Any?)
92+
93+
/**
94+
* Lazy add a log message with a marker and throwable payload if isInfoEnabled is true
95+
*/
96+
fun info(marker: Marker?, t: Throwable?, msg: () -> Any?)
97+
98+
/**
99+
* Lazy add a log message with a marker and throwable payload if isWarnEnabled is true
100+
*/
101+
fun warn(marker: Marker?, t: Throwable?, msg: () -> Any?)
102+
103+
/**
104+
* Lazy add a log message with a marker and throwable payload if isErrorEnabled is true
105+
*/
106+
fun error(marker: Marker?, t: Throwable?, msg: () -> Any?)
57107
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package mu
2+
3+
/**
4+
* A platform independent factory to create markers.
5+
*/
6+
expect object KMarkerFactory {
7+
8+
fun getMarker(name: String): Marker
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package mu
2+
3+
/**
4+
* A platform independent marker to enrich log statements.
5+
*/
6+
expect interface Marker {
7+
8+
fun getName(): String
9+
}

kotlin-logging-js/src/main/kotlin/mu/KLogger.kt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,55 @@ actual interface KLogger {
5454
* Lazy add a log message with throwable payload if isErrorEnabled is true
5555
*/
5656
actual fun error(t: Throwable?, msg: () -> Any?)
57+
58+
/**
59+
* Lazy add a log message if isTraceEnabled is true
60+
*/
61+
actual fun trace(marker: Marker?, msg: () -> Any?)
62+
63+
/**
64+
* Lazy add a log message if isDebugEnabled is true
65+
*/
66+
actual fun debug(marker: Marker?, msg: () -> Any?)
67+
68+
/**
69+
* Lazy add a log message if isInfoEnabled is true
70+
*/
71+
actual fun info(marker: Marker?, msg: () -> Any?)
72+
73+
/**
74+
* Lazy add a log message if isWarnEnabled is true
75+
*/
76+
actual fun warn(marker: Marker?, msg: () -> Any?)
77+
78+
/**
79+
* Lazy add a log message if isErrorEnabled is true
80+
*/
81+
actual fun error(marker: Marker?, msg: () -> Any?)
82+
83+
/**
84+
* Lazy add a log message with throwable payload if isTraceEnabled is true
85+
*/
86+
actual fun trace(marker: Marker?, t: Throwable?, msg: () -> Any?)
87+
88+
/**
89+
* Lazy add a log message with throwable payload if isDebugEnabled is true
90+
*/
91+
actual fun debug(marker: Marker?, t: Throwable?, msg: () -> Any?)
92+
93+
/**
94+
* Lazy add a log message with throwable payload if isInfoEnabled is true
95+
*/
96+
actual fun info(marker: Marker?, t: Throwable?, msg: () -> Any?)
97+
98+
/**
99+
* Lazy add a log message with throwable payload if isWarnEnabled is true
100+
*/
101+
actual fun warn(marker: Marker?, t: Throwable?, msg: () -> Any?)
102+
103+
/**
104+
* Lazy add a log message with throwable payload if isErrorEnabled is true
105+
*/
106+
actual fun error(marker: Marker?, t: Throwable?, msg: () -> Any?)
107+
57108
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package mu
2+
3+
import mu.internal.MarkerJS
4+
5+
actual object KMarkerFactory {
6+
7+
actual fun getMarker(name: String): Marker = MarkerJS(name)
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package mu
2+
3+
actual interface Marker {
4+
5+
actual fun getName(): String
6+
}

kotlin-logging-js/src/main/kotlin/mu/internal/KLoggerJS.kt

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package mu.internal
22

33
import mu.KLogger
44
import mu.KotlinLoggingLevel
5+
import mu.Marker
56
import mu.isLoggingEnabled
67

78
internal class KLoggerJS(private val loggerName: String) : KLogger {
@@ -66,6 +67,66 @@ internal class KLoggerJS(private val loggerName: String) : KLogger {
6667
}
6768
}
6869

70+
override fun trace(marker: Marker?, msg: () -> Any?) {
71+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
72+
console.log("TRACE: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}")
73+
}
74+
}
75+
76+
override fun debug(marker: Marker?, msg: () -> Any?) {
77+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
78+
console.log("DEBUG: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}")
79+
}
80+
}
81+
82+
override fun info(marker: Marker?, msg: () -> Any?) {
83+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
84+
console.info("INFO: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}")
85+
}
86+
}
87+
88+
override fun warn(marker: Marker?, msg: () -> Any?) {
89+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
90+
console.warn("WARN: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}")
91+
}
92+
}
93+
94+
override fun error(marker: Marker?, msg: () -> Any?) {
95+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
96+
console.error("ERROR: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}")
97+
}
98+
}
99+
100+
override fun trace(marker: Marker?, t: Throwable?, msg: () -> Any?) {
101+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
102+
console.log("TRACE: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}${t.throwableToString()}")
103+
}
104+
}
105+
106+
override fun debug(marker: Marker?, t: Throwable?, msg: () -> Any?) {
107+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
108+
console.log("DEBUG: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}${t.throwableToString()}")
109+
}
110+
}
111+
112+
override fun info(marker: Marker?, t: Throwable?, msg: () -> Any?) {
113+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
114+
console.info("INFO: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}${t.throwableToString()}")
115+
}
116+
}
117+
118+
override fun warn(marker: Marker?, t: Throwable?, msg: () -> Any?) {
119+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
120+
console.warn("WARN: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}${t.throwableToString()}")
121+
}
122+
}
123+
124+
override fun error(marker: Marker?, t: Throwable?, msg: () -> Any?) {
125+
if (KotlinLoggingLevel.TRACE.isLoggingEnabled()) {
126+
console.error("ERROR: [$loggerName] ${marker?.getName()} ${msg.toStringSafe()}${t.throwableToString()}")
127+
}
128+
}
129+
69130
private fun Throwable?.throwableToString(): String {
70131
if (this == null) {
71132
return ""
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package mu.internal
2+
3+
import mu.Marker
4+
5+
internal class MarkerJS(private val name: String) : Marker {
6+
7+
override fun getName(): String = this.name
8+
}

kotlin-logging-jvm/build.gradle

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ dependencies {
2323
expectedBy project(':kotlin-logging-common')
2424
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
2525
compile "org.slf4j:slf4j-api:$sl4j_version"
26-
testCompile "org.slf4j:slf4j-log4j12:$sl4j_version"
27-
testCompile "log4j:log4j:1.2.17"
26+
testCompile "org.apache.logging.log4j:log4j-slf4j-impl:2.11.1"
27+
testCompile "org.apache.logging.log4j:log4j-api:2.11.1"
2828
testCompile "org.mockito:mockito-all:1.10.19"
2929
testCompile 'junit:junit:4.12'
3030
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
@@ -34,10 +34,7 @@ dependencies {
3434
// kotlin compiler compatibility options
3535
compileKotlin {
3636
kotlinOptions {
37-
apiVersion = "1.0"
38-
languageVersion = "1.0"
37+
apiVersion = "1.1"
38+
languageVersion = "1.1"
3939
}
4040
}
41-
42-
43-

kotlin-logging-jvm/src/main/kotlin/mu/KLogger.kt

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,54 @@ actual interface KLogger : Logger {
6464
*/
6565
actual fun error(t: Throwable?, msg: () -> Any?)
6666

67+
/**
68+
* Lazy add a log message if isTraceEnabled is true
69+
*/
70+
actual fun trace(marker: Marker?, msg: () -> Any?)
71+
72+
/**
73+
* Lazy add a log message if isDebugEnabled is true
74+
*/
75+
actual fun debug(marker: Marker?, msg: () -> Any?)
76+
77+
/**
78+
* Lazy add a log message if isInfoEnabled is true
79+
*/
80+
actual fun info(marker: Marker?, msg: () -> Any?)
81+
82+
/**
83+
* Lazy add a log message if isWarnEnabled is true
84+
*/
85+
actual fun warn(marker: Marker?, msg: () -> Any?)
86+
87+
/**
88+
* Lazy add a log message if isErrorEnabled is true
89+
*/
90+
actual fun error(marker: Marker?, msg: () -> Any?)
91+
92+
/**
93+
* Lazy add a log message with throwable payload if isTraceEnabled is true
94+
*/
95+
actual fun trace(marker: Marker?, t: Throwable?, msg: () -> Any?)
96+
97+
/**
98+
* Lazy add a log message with throwable payload if isDebugEnabled is true
99+
*/
100+
actual fun debug(marker: Marker?, t: Throwable?, msg: () -> Any?)
101+
102+
/**
103+
* Lazy add a log message with throwable payload if isInfoEnabled is true
104+
*/
105+
actual fun info(marker: Marker?, t: Throwable?, msg: () -> Any?)
106+
107+
/**
108+
* Lazy add a log message with throwable payload if isWarnEnabled is true
109+
*/
110+
actual fun warn(marker: Marker?, t: Throwable?, msg: () -> Any?)
111+
112+
/**
113+
* Lazy add a log message with throwable payload if isErrorEnabled is true
114+
*/
115+
actual fun error(marker: Marker?, t: Throwable?, msg: () -> Any?)
67116

68117
}

0 commit comments

Comments
 (0)