Skip to content

Commit eb267ab

Browse files
committed
feat: add configuration to suppress startup message
Added logStartupMessage property to KotlinLoggingConfiguration to allow disabling the "kotlin-logging: initializing..." message. Implemented logStartupMessage for all platforms (JVM, Android, Darwin, JS, Native, Wasm). Updated KotlinLogging initialization to check logStartupMessage before printing. Fixes #587
1 parent 6a67a6f commit eb267ab

10 files changed

Lines changed: 49 additions & 1 deletion

File tree

src/androidMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public actual object KotlinLoggingConfiguration {
3636

3737
@Volatile public actual var loggerFactory: KLoggerFactory = detectLogger()
3838

39+
public actual var logStartupMessage: Boolean = true
40+
3941
private fun detectLogger(): KLoggerFactory {
4042
if (System.getProperty("kotlin-logging-to-android-native") != null) {
4143
return AndroidNativeLoggerFactory

src/commonMain/kotlin/io/github/oshai/kotlinlogging/KotlinLogging.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public object KotlinLogging {
2424

2525
init {
2626
val factory = KotlinLoggingConfiguration.loggerFactory
27-
println("kotlin-logging: initializing... active logger factory: ${factory::class.simpleName}")
27+
if (KotlinLoggingConfiguration.logStartupMessage) {
28+
println("kotlin-logging: initializing... active logger factory: ${factory::class.simpleName}")
29+
}
2830
}
2931
}

src/commonMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ public expect object KotlinLoggingConfiguration {
77
*/
88
public var loggerFactory: KLoggerFactory
99

10+
/**
11+
* If true, print the "kotlin-logging: initializing..." message during startup. Default is true.
12+
*/
13+
public var logStartupMessage: Boolean
14+
1015
/**
1116
* Configuration for the **Direct Logging** implementation.
1217
*

src/darwinMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ public actual object KotlinLoggingConfiguration {
77
public var subsystem: AtomicReference<String?> = AtomicReference(null)
88
public var category: AtomicReference<String?> = AtomicReference(null)
99

10+
private val _logStartupMessage = AtomicReference(true)
11+
public actual var logStartupMessage: Boolean
12+
get() = _logStartupMessage.value
13+
set(value) {
14+
_logStartupMessage.value = value
15+
}
16+
1017
// Common properties
1118
public actual val direct: DirectLoggingConfiguration =
1219
object : DirectLoggingConfiguration {

src/jsMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.github.oshai.kotlinlogging
22

33
public actual object KotlinLoggingConfiguration {
4+
public actual var logStartupMessage: Boolean = true
5+
46
public actual val direct: DirectLoggingConfiguration =
57
object : DirectLoggingConfiguration {
68
private var _logLevel: Level = Level.INFO

src/jvmMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public actual object KotlinLoggingConfiguration {
1111
*/
1212
@Volatile public actual var loggerFactory: KLoggerFactory = detectLogger()
1313

14+
public actual var logStartupMessage: Boolean = true
15+
1416
public actual val direct: DirectLoggingConfiguration =
1517
object : DirectLoggingConfiguration {
1618
@Volatile
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.github.oshai.kotlinlogging
2+
3+
import kotlin.test.Test
4+
import kotlin.test.assertTrue
5+
6+
class StartupMessageTest {
7+
8+
@Test
9+
fun testApiExistence() {
10+
// Verify that the API exists and is mutable
11+
assertTrue(KotlinLoggingConfiguration.logStartupMessage)
12+
KotlinLoggingConfiguration.logStartupMessage = false
13+
assertTrue(!KotlinLoggingConfiguration.logStartupMessage)
14+
// Restore default
15+
KotlinLoggingConfiguration.logStartupMessage = true
16+
}
17+
}

src/nativeMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ public actual object KotlinLoggingConfiguration {
3131
}
3232
}
3333

34+
private val _logStartupMessage = AtomicReference(true)
35+
public actual var logStartupMessage: Boolean
36+
get() = _logStartupMessage.value
37+
set(value) {
38+
_logStartupMessage.value = value
39+
}
40+
3441
public actual interface DirectLoggingConfiguration {
3542
public actual var logLevel: Level
3643
public actual var formatter: Formatter

src/wasmJsMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ public actual object KotlinLoggingConfiguration {
3535
}
3636

3737
public actual var loggerFactory: KLoggerFactory = DirectLoggerFactory
38+
39+
public actual var logStartupMessage: Boolean = true
3840
}

src/wasmWasiMain/kotlin/io/github/oshai/kotlinlogging/KotlinLoggingConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ public actual object KotlinLoggingConfiguration {
3535
}
3636

3737
public actual var loggerFactory: KLoggerFactory = DirectLoggerFactory
38+
39+
public actual var logStartupMessage: Boolean = true
3840
}

0 commit comments

Comments
 (0)