Fix IJPL-207613 ClassCastException: AgentTestLogger cannot cast to JulLogger in IjentSessionMediatorKt

GitOrigin-RevId: f3e9f6e2df71b882bf2aea7c626114f1a5a0a124
This commit is contained in:
Vladimir Lagunov
2025-09-16 09:59:29 +00:00
committed by intellij-monorepo-bot
parent b6e1c3d02a
commit 25d94d0bf4
3 changed files with 23 additions and 22 deletions
@@ -11,60 +11,63 @@ import com.intellij.openapi.diagnostic.Logger
* Enable trace loggers cautiously.
*/
object IjentLogger {
private val _all_loggers = linkedMapOf<String, Logger>()
val ALL_LOGGERS: Map<String, Logger> 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<Logger> 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")
}
@@ -225,8 +225,8 @@ private val ijentLogMessageRegex = Regex(
)
private val logTargets: Map<String, Logger> 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.")
}
}
@@ -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();
}