Skip to content

Commit 2098a6f

Browse files
YarnSphereoshai
authored andcommitted
Add isLoggingOff implementation
1 parent 1b243f2 commit 2098a6f

File tree

10 files changed

+70
-9
lines changed

10 files changed

+70
-9
lines changed

src/androidMain/kotlin/io/github/oshai/KLogger.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,11 @@ public actual interface KLogger {
118118
* @return True if this Logger is enabled for the ERROR level, false otherwise.
119119
*/
120120
public actual val isErrorEnabled: Boolean
121+
122+
/**
123+
* Is the logger instance OFF?
124+
*
125+
* @return True if this Logger is set to the OFF level, false otherwise.
126+
*/
127+
public actual val isLoggingOff: Boolean
121128
}

src/androidMain/kotlin/io/github/oshai/internal/KLoggerAndroid.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,11 @@ internal class KLoggerAndroid(override val name: String) : KLogger {
130130
* @return True if this Logger is enabled for the ERROR level, false otherwise.
131131
*/
132132
override val isErrorEnabled: Boolean = Log.isLoggable(name, Log.ERROR)
133+
134+
/**
135+
* Is the logger instance OFF?
136+
*
137+
* @return True if this Logger is set to the OFF level, false otherwise.
138+
*/
139+
override val isLoggingOff: Boolean = !Log.isLoggable(name, Log.ASSERT)
133140
}

src/commonMain/kotlin/io/github/oshai/KLogger.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ public expect interface KLogger {
123123
* @return True if this Logger is enabled for the ERROR level, false otherwise.
124124
*/
125125
public val isErrorEnabled: Boolean
126+
127+
/**
128+
* Is the logger instance OFF?
129+
*
130+
* @return True if this Logger is set to the OFF level, false otherwise.
131+
*/
132+
public val isLoggingOff: Boolean
126133
}
127134

128135
/**
@@ -138,7 +145,7 @@ public fun KLogger.isEnabledForLevel(level: Level): Boolean {
138145
Levels.INFO_INT -> isInfoEnabled
139146
Levels.WARN_INT -> isWarnEnabled
140147
Levels.ERROR_INT -> isErrorEnabled
141-
Levels.OFF_INT -> false
148+
Levels.OFF_INT -> isLoggingOff
142149
else -> throw IllegalArgumentException("Level [$level] not recognized.")
143150
}
144151
}
@@ -261,4 +268,11 @@ public interface ActualKLogger {
261268
* @return True if this Logger is enabled for the ERROR level, false otherwise.
262269
*/
263270
public val isErrorEnabled: Boolean
271+
272+
/**
273+
* Is the logger instance OFF?
274+
*
275+
* @return True if this Logger is set to the OFF level, false otherwise.
276+
*/
277+
public val isLoggingOff: Boolean
264278
}

src/jsMain/kotlin/io/github/oshai/internal/KLoggerJS.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.github.oshai.Level
77
import io.github.oshai.Level.DEBUG
88
import io.github.oshai.Level.ERROR
99
import io.github.oshai.Level.INFO
10+
import io.github.oshai.Level.OFF
1011
import io.github.oshai.Level.TRACE
1112
import io.github.oshai.Level.WARN
1213
import io.github.oshai.Marker
@@ -166,4 +167,11 @@ internal class KLoggerJS(override val name: String) : KLogger {
166167
* @return True if this Logger is enabled for the ERROR level, false otherwise.
167168
*/
168169
override val isErrorEnabled: Boolean = ERROR.isLoggingEnabled()
170+
171+
/**
172+
* Is the logger instance OFF?
173+
*
174+
* @return True if this Logger is set to the OFF level, false otherwise.
175+
*/
176+
override val isLoggingOff: Boolean = OFF.isLoggingEnabled()
169177
}

src/jsTest/kotlin/io/github/oshai/SimpleJsTest.kt

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

3-
import kotlin.test.AfterTest
4-
import kotlin.test.BeforeTest
5-
import kotlin.test.Test
6-
import kotlin.test.assertEquals
3+
import kotlin.test.*
74

85
private val logger = KotlinLogging.logger("SimpleJsTest")
96

@@ -33,6 +30,7 @@ class SimpleJsTest {
3330
@Test
3431
fun offLevelJsTest() {
3532
KotlinLoggingConfiguration.LOG_LEVEL = Level.OFF
33+
assertTrue(logger.isLoggingOff)
3634
logger.error { "error msg" }
3735
assertEquals("NA", appender.lastMessage)
3836
assertEquals("NA", appender.lastLevel)

src/jvmMain/kotlin/io/github/oshai/KLogger.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,4 +549,12 @@ public actual interface KLogger : ActualKLogger {
549549
* @param t the exception (throwable) to log
550550
*/
551551
public fun error(marker: Marker?, msg: String?, t: Throwable?)
552+
553+
/**
554+
* Similar to [.isLoggingOff] method except that the marker data is also taken into consideration.
555+
*
556+
* @param marker The marker data to take into consideration
557+
* @return True if this Logger is set to the OFF level, false otherwise.
558+
*/
559+
public fun isLoggingOff(marker: Marker?): Boolean
552560
}

src/jvmMain/kotlin/io/github/oshai/jul/internal/JulLoggerWrapper.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,13 @@ internal class JulLoggerWrapper(override val underlyingLogger: Logger) : KLogger
379379
return underlyingLogger.isLoggable(ERROR.toJULLevel())
380380
}
381381

382+
override val isLoggingOff: Boolean
383+
get() = underlyingLogger.isLoggable(OFF.toJULLevel())
384+
385+
override fun isLoggingOff(marker: Marker?): Boolean {
386+
return underlyingLogger.isLoggable(OFF.toJULLevel())
387+
}
388+
382389
private fun io.github.oshai.Level.toJULLevel(): Level {
383390
val julLevel: Level =
384391
when (this) {

src/jvmMain/kotlin/io/github/oshai/slf4j/internal/Slf4jLoggerWrapper.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,11 @@ internal abstract class Slf4jLoggerWrapper(override val underlyingLogger: Logger
4444
override fun isErrorEnabled(marker: Marker?): Boolean {
4545
return underlyingLogger.isErrorEnabled(marker?.toSlf4j())
4646
}
47+
48+
override val isLoggingOff: Boolean
49+
get() = !underlyingLogger.isErrorEnabled
50+
51+
override fun isLoggingOff(marker: Marker?): Boolean {
52+
return !underlyingLogger.isErrorEnabled(marker?.toSlf4j())
53+
}
4754
}

src/nativeMain/kotlin/io/github/oshai/internal/KLoggerNative.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,11 @@ internal class KLoggerNative(override val name: String) : KLogger {
177177
* @return True if this Logger is enabled for the ERROR level, false otherwise.
178178
*/
179179
override val isErrorEnabled: Boolean = ERROR.isLoggingEnabled()
180+
181+
/**
182+
* Is the logger instance OFF?
183+
*
184+
* @return True if this Logger is set to the OFF level, false otherwise.
185+
*/
186+
override val isLoggingOff: Boolean = OFF.isLoggingEnabled()
180187
}

src/nativeTest/kotlin/io/github/oshai/SimpleNativeTest.kt

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

3-
import kotlin.test.AfterTest
4-
import kotlin.test.BeforeTest
5-
import kotlin.test.Test
6-
import kotlin.test.assertEquals
3+
import kotlin.test.*
74

85
private val logger = KotlinLogging.logger {}
96

@@ -34,6 +31,7 @@ class SimpleNativeTest {
3431
@Test
3532
fun offLevelNativeTest() {
3633
KotlinLoggingConfiguration.logLevel = Level.OFF
34+
assertTrue(logger.isLoggingOff)
3735
logger.error { "error msg" }
3836
assertEquals("NA", appender.lastMessage)
3937
assertEquals("NA", appender.lastLevel)

0 commit comments

Comments
 (0)