Skip to content

Commit

Permalink
✨ Add support for debug mode (#1954)
Browse files Browse the repository at this point in the history
  • Loading branch information
guiyanakuang committed Sep 23, 2024
1 parent b8ad617 commit 471f837
Show file tree
Hide file tree
Showing 13 changed files with 147 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ data class AppConfig(
val appInstanceId: String,
val language: String = getLocaleUtils().getCurrentLocale(),
val enableAutoStartUp: Boolean = true,
val enableDebugMode: Boolean = false,
val isFollowSystemTheme: Boolean = true,
val isDarkTheme: Boolean = false,
val port: Int = 13129,
Expand Down Expand Up @@ -40,6 +41,7 @@ data class AppConfig(
appInstanceId = appInstanceId,
language = if (key == "language") value as String else language,
enableAutoStartUp = if (key == "enableAutoStartUp") value as Boolean else enableAutoStartUp,
enableDebugMode = if (key == "enableDebugMode") value as Boolean else enableDebugMode,
isFollowSystemTheme = if (key == "isFollowSystemTheme") value as Boolean else isFollowSystemTheme,
isDarkTheme = if (key == "isDarkTheme") value as Boolean else isDarkTheme,
port = if (key == "port") value as Int else port,
Expand Down
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)
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ expect fun close(): Painter
@Composable
expect fun database(): Painter

@Composable
expect fun debug(): Painter

@Composable
expect fun descSort(): Painter

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ import androidx.compose.ui.unit.toSize
import androidx.compose.ui.window.Popup
import com.crosspaste.config.ConfigManager
import com.crosspaste.i18n.GlobalCopywriter
import com.crosspaste.log.CrossPasteLogger
import com.crosspaste.paste.PasteboardService
import com.crosspaste.ui.base.CustomSwitch
import com.crosspaste.ui.base.ExpandView
Expand All @@ -69,6 +70,7 @@ import com.crosspaste.ui.base.arrowRight
import com.crosspaste.ui.base.arrowUp
import com.crosspaste.ui.base.bolt
import com.crosspaste.ui.base.clipboard
import com.crosspaste.ui.base.debug
import com.crosspaste.ui.base.getMenWidth
import com.crosspaste.ui.base.language
import com.crosspaste.ui.base.palette
Expand All @@ -95,6 +97,7 @@ fun SettingsTextStyle() =
fun SettingsContentView() {
val configManager = koinInject<ConfigManager>()
val copywriter = koinInject<GlobalCopywriter>()
val crossPasteLogger = koinInject<CrossPasteLogger>()
val pasteboardService = koinInject<PasteboardService>()
var hasBeenClicked by remember { mutableStateOf(false) }
var showMoreLanguage by remember { mutableStateOf(false) }
Expand Down Expand Up @@ -320,6 +323,29 @@ fun SettingsContentView() {
},
)
}

HorizontalDivider(modifier = Modifier.padding(start = 35.dp))

SettingItemView(
painter = debug(),
text = "debug_mode",
tint = Color(0xFFFCCD2A),
) {
var enableDebugMode by remember { mutableStateOf(configManager.config.enableDebugMode) }

CustomSwitch(
modifier =
Modifier.width(32.dp)
.height(20.dp),
checked = enableDebugMode,
onCheckedChange = { changeEnableDebugMode ->
crossPasteLogger.updateRootLogLevel(
if (changeEnableDebugMode) "debug" else "info",
)
enableDebugMode = configManager.config.enableDebugMode
},
)
}
}

Spacer(modifier = Modifier.height(10.dp))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ import com.crosspaste.listener.ShortcutKeys
import com.crosspaste.listener.ShortcutKeysAction
import com.crosspaste.listener.ShortcutKeysListener
import com.crosspaste.log.CrossPasteLogger
import com.crosspaste.log.initLogger
import com.crosspaste.log.DesktopCrossPasteLogger
import com.crosspaste.net.DesktopPasteBonjourService
import com.crosspaste.net.DesktopServerFactory
import com.crosspaste.net.DesktopServerModule
Expand Down Expand Up @@ -220,8 +220,9 @@ class CrossPaste {
)

private val crossPasteLogger =
initLogger(
DesktopCrossPasteLogger(
appPathProvider.resolve("crosspaste.log", AppFileType.LOG).toString(),
configManager,
)

private val logger: KLogger = KotlinLogging.logger {}
Expand Down

This file was deleted.

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
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ actual fun database(): Painter {
return painterResource("icon/base/database.svg")
}

@Composable
actual fun debug(): Painter {
return painterResource("icon/base/debug.svg")
}

@Composable
actual fun descSort(): Painter {
return painterResource("icon/base/sort-desc.svg")
Expand Down
1 change: 1 addition & 0 deletions composeApp/src/desktopMain/resources/i18n/en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ current_software_version=Current software version
dark=Dark
date=Date
debug=Debug
debug_mode=Debug Mode
delete=Delete
delete_favorite=Delete Favorite
determining_the_new_storage_path=Determining the new storage path
Expand Down
1 change: 1 addition & 0 deletions composeApp/src/desktopMain/resources/i18n/es.properties
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ current_software_version=Versión actual del software
dark=Oscuro
date=Fecha
debug=Depurar
debug_mode=Modo de depuración
delete=Eliminar
delete_favorite=Eliminar favorito
determining_the_new_storage_path=Determinando la nueva ruta de almacenamiento
Expand Down
1 change: 1 addition & 0 deletions composeApp/src/desktopMain/resources/i18n/jp.properties
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ current_software_version=現在のソフトウェアバージョン
dark=暗い
date=日付
debug=デバッグ
debug_mode=デバッグモード
delete=削除
delete_favorite=お気に入りを削除
determining_the_new_storage_path=新しいストレージパスを決定中
Expand Down
1 change: 1 addition & 0 deletions composeApp/src/desktopMain/resources/i18n/zh.properties
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ current_software_version=当前软件版本
dark=深色
date=日期
debug=调试
debug_mode=调试模式
delete=删除
delete_favorite=取消收藏
determining_the_new_storage_path=确定新的存储路径
Expand Down
1 change: 1 addition & 0 deletions composeApp/src/desktopMain/resources/icon/base/debug.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 471f837

Please sign in to comment.