Skip to content

Commit 41e73d9

Browse files
committed
Enhancing logger builder
1 parent 5f6b295 commit 41e73d9

File tree

5 files changed

+72
-27
lines changed

5 files changed

+72
-27
lines changed

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,23 @@
44

55
```kotlin
66
val error = IllegalArgumentException("test error log message")
7-
JsonLog(logger())
7+
logger.jsonLog
88
.add("test-key", "test-value")
99
.error(error)
10+
.level(Level.INFO)
11+
.printStackTracker(true)
1012
.message("this is a test log message created in {} of lib version {}", LocalDate.of(2022, 8, 12), "1.0.0")
11-
.run(Level.ERROR, true)
13+
.run()
14+
```
15+
16+
```java
17+
JsonLoggerKt.getJsonLog(log)
18+
.add("test-key","test-value")
19+
.error(error)
20+
.level(Level.INFO)
21+
.printStackTracker(true)
22+
.message("this is a test log message created in {} of lib version {}",LocalDate.of(2022,8,12),"1.0.0")
23+
.run()
1224
```
1325

1426
```json

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ java {
1717
withSourcesJar()
1818
}
1919

20-
val apiVersion = "0.0.3"
20+
val apiVersion = "0.0.4"
2121

2222

2323
group = "com.softwareplace"

src/main/kotlin/com/softwareplace/json/logger/log/JsonLogger.kt

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import org.slf4j.LoggerFactory
77
import org.slf4j.event.Level
88

99

10-
inline fun <reified T : Any> T.logger(): Logger = LoggerFactory.getLogger(T::class.java)
10+
inline val <reified T : Any> T.logger: Logger get() = LoggerFactory.getLogger(T::class.java)
11+
val Logger.jsonLog: JsonLog get() = JsonLog(this)
1112

1213
private data class LoggerModel(
1314
val message: String?,
@@ -19,13 +20,25 @@ data class JsonLog(private val logger: Logger) {
1920
private var message: String? = null
2021
private var properties: HashMap<String, Any>? = null
2122
private var error: Throwable? = null
23+
private var printStackTraceEnable: Boolean = false
24+
private var level: Level = Level.TRACE
2225

2326

27+
fun level(level: Level): JsonLog {
28+
this.level = level
29+
return this
30+
}
31+
2432
fun error(error: Throwable?): JsonLog {
2533
this.error = error
2634
return this
2735
}
2836

37+
fun printStackTracker(value: Boolean): JsonLog {
38+
this.printStackTraceEnable = value
39+
return this
40+
}
41+
2942
fun message(message: String, vararg args: Any?): JsonLog {
3043
this.message = String.format(message.replace("{}", "%s"), *args)
3144
return this
@@ -40,37 +53,51 @@ data class JsonLog(private val logger: Logger) {
4053
}
4154

4255
fun run(
43-
level: Level,
44-
printStackTraceEnable: Boolean = false,
4556
mapper: ObjectMapper = getObjectMapper()
46-
) {
57+
): Logger {
4758
val loggerMessage = mapper.writeValueAsString(
4859
LoggerModel(
4960
message = message,
5061
properties = properties,
5162
errorMessage = error?.message
5263
)
5364
)
54-
if (printStackTraceEnable) {
65+
66+
return if (printStackTraceEnable) {
5567
logger.run(level, loggerMessage, error)
5668
} else {
5769
logger.run(level, loggerMessage)
5870
}
5971
}
60-
}
6172

73+
fun run(): Logger {
74+
val loggerMessage = getObjectMapper().writeValueAsString(
75+
LoggerModel(
76+
message = message,
77+
properties = properties,
78+
errorMessage = error?.message
79+
)
80+
)
81+
return if (printStackTraceEnable) {
82+
logger.run(level, loggerMessage, error)
83+
} else {
84+
logger.run(level, loggerMessage)
85+
}
86+
}
87+
}
6288

6389
fun Logger.run(
6490
level: Level = Level.INFO,
6591
message: String,
6692
error: Throwable? = null
67-
) {
93+
): Logger {
6894
when (level) {
6995
Level.DEBUG -> debug(message, error)
7096
Level.TRACE -> trace(message, error)
7197
Level.WARN -> warn(message, error)
7298
Level.ERROR -> error(message, error)
7399
else -> info(message, error)
74100
}
101+
return this
75102
}
76103

src/main/resources/logback.xml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33

44
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
55
<encoder>
6-
<pattern>
7-
%boldMagenta(%d{dd-MM-yyyy HH:mm:ss.SSS}) - [%boldGreen(%thread)] - %highlight(%-5level) %boldMagenta(%logger{36}.%M) - %boldYellow(%msg%n)
8-
</pattern>
6+
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
97
</encoder>
108
</appender>
119

src/test/kotlin/com/softwareplace/json/logger/log/JsonLogTest.kt renamed to src/test/kotlin/com/softwareplace/json/logger/log/JsonLogTestExt.kt

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ import java.time.LocalDate
1111

1212
@Suppress("KotlinPlaceholderCountMatchesArgumentCount")
1313
@ExtendWith(MockKExtension::class)
14-
class JsonLogTest {
14+
class JsonLogTestExt {
1515
@Test
1616
fun `must to call logger with expected json`() {
17-
val logger = spyk(logger())
18-
JsonLog(logger)
17+
val logger = spyk(logger)
18+
.jsonLog
1919
.add("test-key", "test-value")
20-
.run(Level.INFO)
20+
.level(Level.INFO)
21+
.run()
2122

2223
verify {
2324
logger.run(Level.INFO, "{\"properties\":{\"test-key\":\"test-value\"}}")
@@ -27,10 +28,11 @@ class JsonLogTest {
2728

2829
@Test
2930
fun `must to call log debug with expected json`() {
30-
val logger = spyk(logger())
31+
val logger = spyk(logger)
3132
JsonLog(logger)
3233
.add("test-key", "test-value")
33-
.run(Level.DEBUG)
34+
.level(Level.DEBUG)
35+
.run()
3436

3537
verify {
3638
logger.run(Level.DEBUG, "{\"properties\":{\"test-key\":\"test-value\"}}")
@@ -40,10 +42,11 @@ class JsonLogTest {
4042

4143
@Test
4244
fun `must to call log warn with expected json`() {
43-
val logger = spyk(logger())
45+
val logger = spyk(logger)
4446
JsonLog(logger)
4547
.add("test-key", "test-value")
46-
.run(Level.WARN)
48+
.level(Level.WARN)
49+
.run()
4750

4851
verify {
4952
logger.run(Level.WARN, "{\"properties\":{\"test-key\":\"test-value\"}}")
@@ -53,12 +56,14 @@ class JsonLogTest {
5356

5457
@Test
5558
fun `must to call logger with error message`() {
56-
val logger = spyk(logger())
59+
val logger = spyk(logger)
5760
val error = IllegalArgumentException("test error log message")
5861
JsonLog(logger)
5962
.add("test-key", "test-value")
6063
.error(error)
61-
.run(Level.INFO, true)
64+
.level(Level.INFO)
65+
.printStackTracker(true)
66+
.run()
6267

6368
verify {
6469
logger.run(Level.INFO, "{\"properties\":{\"test-key\":\"test-value\"},\"errorMessage\":\"test error log message\"}", error)
@@ -68,11 +73,12 @@ class JsonLogTest {
6873

6974
@Test
7075
fun `must to call logInfo with message`() {
71-
val logger = spyk(logger())
76+
val logger = spyk(logger)
7277
JsonLog(logger)
7378
.add("test-key", "test-value")
7479
.message("this is a test log message created in {} of lib version {}", LocalDate.of(2022, 8, 12), "1.0.0")
75-
.run(Level.INFO)
80+
.level(Level.INFO)
81+
.run()
7682

7783
verify {
7884
logger.run(
@@ -88,13 +94,15 @@ class JsonLogTest {
8894

8995
@Test
9096
fun `must to call log error with message`() {
91-
val logger = spyk(logger())
97+
val logger = spyk(logger)
9298
val error = IllegalArgumentException("test error log message")
9399
JsonLog(logger)
94100
.add("test-key", "test-value")
95101
.error(error)
96102
.message("this is a test log message created in {} of lib version {}", LocalDate.of(2022, 8, 12), "1.0.0")
97-
.run(Level.ERROR, true)
103+
.level(Level.ERROR)
104+
.printStackTracker(true)
105+
.run()
98106

99107
verify {
100108
logger.run(

0 commit comments

Comments
 (0)