diff --git a/platform/ijent/src/com/intellij/platform/ijent/IjentLogger.kt b/platform/ijent/src/com/intellij/platform/ijent/IjentLogger.kt index 012b129488aa..4df352f27a56 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/IjentLogger.kt +++ b/platform/ijent/src/com/intellij/platform/ijent/IjentLogger.kt @@ -11,60 +11,63 @@ import com.intellij.openapi.diagnostic.Logger * Enable trace loggers cautiously. */ object IjentLogger { + private val _all_loggers = linkedMapOf() + val ALL_LOGGERS: Map get() = _all_loggers + + private fun logger(name: String): Logger { + val l = Logger.getInstance(name) + _all_loggers[name] = l + return l + } + /** * Fetching environment variables. */ - val ENV_VAR_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.env_var") + val ENV_VAR_LOG: Logger = logger("#com.intellij.platform.ijent.env_var") /** * Processes: launch, stdio, exit codes, signals. */ - val EXEC_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.exec") + val EXEC_LOG: Logger = logger("#com.intellij.platform.ijent.exec") /** * External CLI handlers. Logs similar to processes. */ - val EXT_CLI_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.ext_cli") + val EXT_CLI_LOG: Logger = logger("#com.intellij.platform.ijent.ext_cli") /** * Requests to watch/unwatch files. List of changed files. */ - val FILE_WATCHER_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.file_watcher") + val FILE_WATCHER_LOG: Logger = logger("#com.intellij.platform.ijent.file_watcher") /** * All filesystem operations excluding reading and writing files. */ - val FS_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.fs") + val FS_LOG: Logger = logger("#com.intellij.platform.ijent.fs") /** * Dedicated logger for reading and writing files that can show contents of files. */ - val FS_FILE_CONTENT_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.fs_file_content") + val FS_FILE_CONTENT_LOG: Logger = logger("#com.intellij.platform.ijent.fs_file_content") /** * gRPC requests and responses. */ - val GRPC_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.grpc") + val GRPC_LOG: Logger = logger("#com.intellij.platform.ijent.grpc") /** * Traffic dump for virtual machine sockets when IJent runs inside Hyper-V VM. */ - val HYPERV_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.hyperv") + val HYPERV_LOG: Logger = logger("#com.intellij.platform.ijent.hyperv") /** * Everything that doesn't fit the other categories. */ - val OTHER_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.other") + val OTHER_LOG: Logger = logger("#com.intellij.platform.ijent.other") /** * TCP tunnels (TODO). * Unix sockets. */ - val TUNNELS_LOG: Logger = Logger.getInstance("#com.intellij.platform.ijent.tunnels") - - val ALL_LOGGERS: Collection by lazy { - IjentLogger::class.java.declaredFields - .filter { it.type == Logger::class.java } - .map { field -> field.get(this) as Logger } - } + val TUNNELS_LOG: Logger = logger("#com.intellij.platform.ijent.tunnels") } \ No newline at end of file diff --git a/platform/ijent/src/com/intellij/platform/ijent/spi/IjentSessionMediator.kt b/platform/ijent/src/com/intellij/platform/ijent/spi/IjentSessionMediator.kt index cd6111e3ac36..fcf6958fb91b 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/spi/IjentSessionMediator.kt +++ b/platform/ijent/src/com/intellij/platform/ijent/spi/IjentSessionMediator.kt @@ -225,8 +225,8 @@ private val ijentLogMessageRegex = Regex( ) private val logTargets: Map by lazy { - IjentLogger.ALL_LOGGERS.associateByTo(hashMapOf()) { logger -> - (logger as JulLogger).loggerName.removePrefix("#com.intellij.platform.ijent.") + IjentLogger.ALL_LOGGERS.mapKeys { (loggerName, _) -> + loggerName.removePrefix("#com.intellij.platform.ijent.") } } diff --git a/platform/util/src/com/intellij/openapi/diagnostic/JulLogger.java b/platform/util/src/com/intellij/openapi/diagnostic/JulLogger.java index d18c45e32d12..345021233cef 100644 --- a/platform/util/src/com/intellij/openapi/diagnostic/JulLogger.java +++ b/platform/util/src/com/intellij/openapi/diagnostic/JulLogger.java @@ -3,10 +3,7 @@ package com.intellij.openapi.diagnostic; import com.intellij.openapi.util.ShutDownTracker; import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.TestOnly; +import org.jetbrains.annotations.*; import java.lang.reflect.Field; import java.nio.file.Path; @@ -42,6 +39,7 @@ public class JulLogger extends Logger { myLogger = delegate; } + @VisibleForTesting public final @NotNull String getLoggerName() { return myLogger.getName(); }