-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
✨ Add support for debug mode (#1954)
- Loading branch information
1 parent
b8ad617
commit 471f837
Showing
13 changed files
with
147 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
composeApp/src/commonMain/kotlin/com/crosspaste/log/CrossPasteLogger.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
package com.crosspaste.log | ||
|
||
expect fun initLogger(logPath: String): CrossPasteLogger | ||
|
||
interface CrossPasteLogger { | ||
val logLevel: String | ||
val logPath: String | ||
val loggerDebugPackages: String? | ||
|
||
fun updateRootLogLevel(logLevel: String) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 0 additions & 71 deletions
71
composeApp/src/desktopMain/kotlin/com/crosspaste/log/CrossPasteLogger.desktop.kt
This file was deleted.
Oops, something went wrong.
101 changes: 101 additions & 0 deletions
101
composeApp/src/desktopMain/kotlin/com/crosspaste/log/DesktopCrossPasteLogger.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
package com.crosspaste.log | ||
|
||
import ch.qos.logback.classic.Level | ||
import ch.qos.logback.classic.LoggerContext | ||
import ch.qos.logback.classic.encoder.PatternLayoutEncoder | ||
import ch.qos.logback.classic.spi.ILoggingEvent | ||
import ch.qos.logback.core.rolling.RollingFileAppender | ||
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy | ||
import com.crosspaste.config.ConfigManager | ||
import com.crosspaste.utils.getSystemProperty | ||
import org.slf4j.Logger | ||
import org.slf4j.LoggerFactory | ||
|
||
class DesktopCrossPasteLogger( | ||
override val logPath: String, | ||
private val configManager: ConfigManager, | ||
) : CrossPasteLogger { | ||
|
||
override lateinit var logLevel: String | ||
override val loggerDebugPackages: String? | ||
|
||
init { | ||
val systemProperty = getSystemProperty() | ||
systemProperty.getOption("loggerLevel")?.let { | ||
logLevel = it | ||
if (logLevel == "debug" && !configManager.config.enableDebugMode) { | ||
configManager.updateConfig("enableDebugMode", true) | ||
} else if (logLevel != "debug" && configManager.config.enableDebugMode) { | ||
configManager.updateConfig("enableDebugMode", false) | ||
} | ||
} ?: run { | ||
logLevel = | ||
if (configManager.config.enableDebugMode) { | ||
"debug" | ||
} else { | ||
"info" | ||
} | ||
} | ||
|
||
val context = LoggerFactory.getILoggerFactory() as LoggerContext | ||
|
||
val encoder = PatternLayoutEncoder() | ||
encoder.context = context | ||
encoder.pattern = "%date %level [%thread] %logger{10} [%file:%line] %msg%n" | ||
encoder.start() | ||
|
||
val rollingFileAppender = RollingFileAppender<ILoggingEvent>() | ||
rollingFileAppender.context = context | ||
rollingFileAppender.file = logPath | ||
rollingFileAppender.encoder = encoder | ||
|
||
val rollingPolicy = TimeBasedRollingPolicy<ILoggingEvent>() | ||
rollingPolicy.context = context | ||
rollingPolicy.setParent(rollingFileAppender) | ||
rollingPolicy.fileNamePattern = "$logPath.%d{yyyy-MM-dd}.log" | ||
rollingPolicy.maxHistory = 30 | ||
rollingPolicy.start() | ||
|
||
rollingFileAppender.rollingPolicy = rollingPolicy | ||
rollingFileAppender.start() | ||
|
||
val rootLogger = context.getLogger(Logger.ROOT_LOGGER_NAME) as ch.qos.logback.classic.Logger | ||
rootLogger.level = getLevel(logLevel) | ||
rootLogger.addAppender(rollingFileAppender) | ||
|
||
val jThemeLogger = context.getLogger("com.jthemedetecor") as ch.qos.logback.classic.Logger | ||
jThemeLogger.level = Level.OFF | ||
|
||
loggerDebugPackages = systemProperty.getOption("loggerDebugPackages") | ||
|
||
loggerDebugPackages?.let { debugPackages -> | ||
for (packageName in debugPackages.split(",")) { | ||
val logger = context.getLogger(packageName) as ch.qos.logback.classic.Logger | ||
logger.level = Level.DEBUG | ||
} | ||
} | ||
} | ||
|
||
override fun updateRootLogLevel(logLevel: String) { | ||
val context = LoggerFactory.getILoggerFactory() as LoggerContext | ||
val rootLogger = context.getLogger(Logger.ROOT_LOGGER_NAME) as ch.qos.logback.classic.Logger | ||
val level = getLevel(logLevel) | ||
if (level == Level.DEBUG) { | ||
configManager.updateConfig("enableDebugMode", true) | ||
} else { | ||
configManager.updateConfig("enableDebugMode", false) | ||
} | ||
rootLogger.level = getLevel(logLevel) | ||
} | ||
|
||
private fun getLevel(logLevel: String): Level { | ||
return when (logLevel) { | ||
"trace" -> Level.TRACE | ||
"debug" -> Level.DEBUG | ||
"info" -> Level.INFO | ||
"warn" -> Level.WARN | ||
"error" -> Level.ERROR | ||
else -> Level.INFO | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.