kotlin-desktop-toolkit/src/main/kotlin/org/jetbrains/desktop/macos/Logger.kt [34:193]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public interface AppenderInterface { public val isTraceEnabled: Boolean public val isDebugEnabled: Boolean public val isInfoEnabled: Boolean public val isWarnEnabled: Boolean public val isErrorEnabled: Boolean public fun trace(message: String) public fun debug(message: String) public fun info(message: String) public fun warn(message: String) public fun error(message: String) public fun trace(t: Throwable, message: String) public fun debug(t: Throwable, message: String) public fun info(t: Throwable, message: String) public fun warn(t: Throwable, message: String) public fun error(t: Throwable, message: String) } internal class DefaultConsoleAppender( override val isTraceEnabled: Boolean, override val isDebugEnabled: Boolean, override val isInfoEnabled: Boolean, override val isWarnEnabled: Boolean, override val isErrorEnabled: Boolean, ) : AppenderInterface { companion object { fun fromLevel(level: LogLevel = LogLevel.Info): DefaultConsoleAppender { return DefaultConsoleAppender( isTraceEnabled = LogLevel.Trace.isNoMoreVerbose(level), isDebugEnabled = LogLevel.Debug.isNoMoreVerbose(level), isInfoEnabled = LogLevel.Info.isNoMoreVerbose(level), isWarnEnabled = LogLevel.Warn.isNoMoreVerbose(level), isErrorEnabled = LogLevel.Error.isNoMoreVerbose(level), ) } } override fun trace(message: String) { System.err.println("[TRACE] $message") } override fun trace(t: Throwable, message: String) { System.err.println("[TRACE] $message") System.err.println(t.stackTraceToString()) } override fun debug(message: String) { System.err.println("[DEBUG] $message") } override fun debug(t: Throwable, message: String) { System.err.println("[DEBUG] $message") System.err.println(t.stackTraceToString()) } override fun info(message: String) { System.err.println("[INFO] $message") } override fun info(t: Throwable, message: String) { System.err.println("[INFO] $message") System.err.println(t.stackTraceToString()) } override fun warn(message: String) { System.err.println("[WARN] $message") } override fun warn(t: Throwable, message: String) { System.err.println("[WARN] $message") System.err.println(t.stackTraceToString()) } override fun error(message: String) { System.err.println("[ERROR] $message") } override fun error(t: Throwable, message: String) { System.err.println("[ERROR] $message") System.err.println(t.stackTraceToString()) } } public object Logger { public var appender: AppenderInterface = DefaultConsoleAppender.fromLevel(LogLevel.Info) public inline fun trace(msg: () -> String) { if (appender.isTraceEnabled) { appender.trace(msg()) } } public inline fun debug(msg: () -> String) { if (appender.isDebugEnabled) { appender.debug(msg()) } } public inline fun info(msg: () -> String) { if (appender.isInfoEnabled) { appender.info(msg()) } } public inline fun warn(msg: () -> String) { if (appender.isWarnEnabled) { appender.warn(msg()) } } public inline fun error(msg: () -> String) { if (appender.isErrorEnabled) { appender.error(msg()) } } public inline fun trace(t: Throwable, msg: () -> String = { "" }) { if (appender.isTraceEnabled) { appender.trace(t, msg()) } } public inline fun debug(t: Throwable, msg: () -> String = { "" }) { if (appender.isDebugEnabled) { appender.debug(t, msg()) } } public inline fun info(t: Throwable, msg: () -> String = { "" }) { if (appender.isInfoEnabled) { appender.info(t, msg()) } } public inline fun warn(t: Throwable, msg: () -> String = { "" }) { if (appender.isWarnEnabled) { appender.warn(t, msg()) } } public inline fun error(t: Throwable, msg: () -> String = { "" }) { if (appender.isErrorEnabled) { appender.error(t, msg()) } } } internal fun initLogger(logFile: Path, consoleLogLevel: LogLevel, fileLogLevel: LogLevel, appender: AppenderInterface) { ffiDownCall { Logger.appender = appender Arena.ofConfined().use { arena -> val configuration = NativeLoggerConfiguration.allocate(arena) val logFileStr = logFile.toAbsolutePath().toString() NativeLoggerConfiguration.file_path(configuration, arena.allocateUtf8String(logFileStr)) NativeLoggerConfiguration.console_level(configuration, consoleLogLevel.toNative()) NativeLoggerConfiguration.file_level(configuration, fileLogLevel.toNative()) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - kotlin-desktop-toolkit/src/main/kotlin/org/jetbrains/desktop/win32/Logger.kt [34:193]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public interface AppenderInterface { public val isTraceEnabled: Boolean public val isDebugEnabled: Boolean public val isInfoEnabled: Boolean public val isWarnEnabled: Boolean public val isErrorEnabled: Boolean public fun trace(message: String) public fun debug(message: String) public fun info(message: String) public fun warn(message: String) public fun error(message: String) public fun trace(t: Throwable, message: String) public fun debug(t: Throwable, message: String) public fun info(t: Throwable, message: String) public fun warn(t: Throwable, message: String) public fun error(t: Throwable, message: String) } internal class DefaultConsoleAppender( override val isTraceEnabled: Boolean, override val isDebugEnabled: Boolean, override val isInfoEnabled: Boolean, override val isWarnEnabled: Boolean, override val isErrorEnabled: Boolean, ) : AppenderInterface { companion object { fun fromLevel(level: LogLevel = LogLevel.Info): DefaultConsoleAppender { return DefaultConsoleAppender( isTraceEnabled = LogLevel.Trace.isNoMoreVerbose(level), isDebugEnabled = LogLevel.Debug.isNoMoreVerbose(level), isInfoEnabled = LogLevel.Info.isNoMoreVerbose(level), isWarnEnabled = LogLevel.Warn.isNoMoreVerbose(level), isErrorEnabled = LogLevel.Error.isNoMoreVerbose(level), ) } } override fun trace(message: String) { System.err.println("[TRACE] $message") } override fun trace(t: Throwable, message: String) { System.err.println("[TRACE] $message") System.err.println(t.stackTraceToString()) } override fun debug(message: String) { System.err.println("[DEBUG] $message") } override fun debug(t: Throwable, message: String) { System.err.println("[DEBUG] $message") System.err.println(t.stackTraceToString()) } override fun info(message: String) { System.err.println("[INFO] $message") } override fun info(t: Throwable, message: String) { System.err.println("[INFO] $message") System.err.println(t.stackTraceToString()) } override fun warn(message: String) { System.err.println("[WARN] $message") } override fun warn(t: Throwable, message: String) { System.err.println("[WARN] $message") System.err.println(t.stackTraceToString()) } override fun error(message: String) { System.err.println("[ERROR] $message") } override fun error(t: Throwable, message: String) { System.err.println("[ERROR] $message") System.err.println(t.stackTraceToString()) } } public object Logger { public var appender: AppenderInterface = DefaultConsoleAppender.fromLevel(LogLevel.Info) public inline fun trace(msg: () -> String) { if (appender.isTraceEnabled) { appender.trace(msg()) } } public inline fun debug(msg: () -> String) { if (appender.isDebugEnabled) { appender.debug(msg()) } } public inline fun info(msg: () -> String) { if (appender.isInfoEnabled) { appender.info(msg()) } } public inline fun warn(msg: () -> String) { if (appender.isWarnEnabled) { appender.warn(msg()) } } public inline fun error(msg: () -> String) { if (appender.isErrorEnabled) { appender.error(msg()) } } public inline fun trace(t: Throwable, msg: () -> String = { "" }) { if (appender.isTraceEnabled) { appender.trace(t, msg()) } } public inline fun debug(t: Throwable, msg: () -> String = { "" }) { if (appender.isDebugEnabled) { appender.debug(t, msg()) } } public inline fun info(t: Throwable, msg: () -> String = { "" }) { if (appender.isInfoEnabled) { appender.info(t, msg()) } } public inline fun warn(t: Throwable, msg: () -> String = { "" }) { if (appender.isWarnEnabled) { appender.warn(t, msg()) } } public inline fun error(t: Throwable, msg: () -> String = { "" }) { if (appender.isErrorEnabled) { appender.error(t, msg()) } } } internal fun initLogger(logFile: Path, consoleLogLevel: LogLevel, fileLogLevel: LogLevel, appender: AppenderInterface) { ffiDownCall { Logger.appender = appender Arena.ofConfined().use { arena -> val configuration = NativeLoggerConfiguration.allocate(arena) val logFileStr = logFile.toAbsolutePath().toString() NativeLoggerConfiguration.file_path(configuration, arena.allocateUtf8String(logFileStr)) NativeLoggerConfiguration.console_level(configuration, consoleLogLevel.toNative()) NativeLoggerConfiguration.file_level(configuration, fileLogLevel.toNative()) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -