From a552cad2f37cd4b6f1745eef99357f1a86bf83d9 Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Wed, 10 Jan 2024 11:56:54 +0100 Subject: [PATCH] [java-console] IJ-CR-123098 IDEA-331307 Provide navigation for logs for jvm languages - support for shortened logs GitOrigin-RevId: ac81a1f2297b4706b0d018da47d23a855f4e5bb1 --- .../customization/console/ClassInfoCache.kt | 1 + .../console/JavaLogFinderHyperlinkTest.kt | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/jvm/jvm-analysis-impl/src/com/intellij/analysis/customization/console/ClassInfoCache.kt b/jvm/jvm-analysis-impl/src/com/intellij/analysis/customization/console/ClassInfoCache.kt index 168168c0f033..c42c1256fc34 100644 --- a/jvm/jvm-analysis-impl/src/com/intellij/analysis/customization/console/ClassInfoCache.kt +++ b/jvm/jvm-analysis-impl/src/com/intellij/analysis/customization/console/ClassInfoCache.kt @@ -35,6 +35,7 @@ class ClassInfoCache(val project: Project, private val mySearchScope: GlobalSear private fun canBeShortenedPackages(clazz: PsiClass, targetPackageName: String): Boolean { val qualifiedName = clazz.qualifiedName ?: return false val actualPackageName = StringUtil.getPackageName(qualifiedName) + if (actualPackageName.endsWith(targetPackageName)) return true val actualPackageNames = actualPackageName.split(".") val targetPackageNames = targetPackageName.split(".") if (actualPackageNames.size != targetPackageNames.size) return false diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/customization/console/console/JavaLogFinderHyperlinkTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/customization/console/console/JavaLogFinderHyperlinkTest.kt index 429d7c075c7e..d91fdffdbdb3 100644 --- a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/customization/console/console/JavaLogFinderHyperlinkTest.kt +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/customization/console/console/JavaLogFinderHyperlinkTest.kt @@ -45,6 +45,45 @@ public final class Log4j { ) } + fun testLastPartLog4j2() { + LoggingTestUtils.addLog4J(myFixture) + checkColumnFinderJava( + fileName = "Log4jk", + classText = """ +package com.example.loggingjava.java; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public final class Log4j { + + private static final Logger logger = LogManager.getLogger(); + + public static void main(String[] args) { + System.out.println("1"); + log4j(); + log4j2(1); + } + + private static void log4j2(int i) { + String message = "Second" + " Request {}" + i; + logger.error(message, i); + } + + private static void log4j() { + logger.info("First request"); + } +} +""".trimIndent(), + logItems = listOf( + LogItem("java.exe", null), + LogItem("1", null), + LogItem("19:50:03.422 [main] INFO gjava.java.Log4j - First request", LogicalPosition(21, 8)), + LogItem("19:50:03.430 [main] ERROR gjava.java.Log4j - Second Request 11", LogicalPosition(17, 8)), + ) + ) + } + fun testSimpleSlf4j() { LoggingTestUtils.addSlf4J(myFixture) checkColumnFinderJava(