Можно ли иметь интерактивные имена классов в консольном выпуске в IntelliJ?
При запуске сервера внутри IntelliJ вы можете увидеть вывод консоли в окне внизу экрана.
Есть ли способ форматирования вывода, чтобы IntelliJ распознавал имена классов и сделал их доступными для кликов? Затем, когда я вижу имя класса на выходе сервера, я мог бы щелкнуть по нему и пойти прямо туда.
Спасибо:)
Ответы
Ответ 1
Есть. Взято из онлайн-справки http://www.jetbrains.com/idea/webhelp/setting-log-options.html
Если вы используете сторонние инструменты ведения журнала, вы можете сделать вывода сообщений, который имитирует стандартную привязку к исходному коду как для строки stacktrace (at. (:)). Для этого вы должны добавить конкретный шаблон преобразования в свой файл log.xml Файл конфигурации. Например, в шаблоне преобразования log4j это будет
<param name="ConversionPattern" value="%-5p - [%-80m] - at %c.%M(%F:%L)%n"/>
Однако результат вывода довольно уродлив с полными именами, именами методов и т.д.
Ответ 2
Как и в IntelliJ 14 и альтернатива копанию через настройки IntelliJ, некоторые пробные ошибки и ошибки показали, что что-либо с шаблоном
(anyfile.ext:line)
которому предшествует хотя бы один .
в консоли, превращается в ссылку файла, если есть файл, известный этим именем, например. .(Whatever.java:55)
, в рабочей области, исключая библиотеки.
Я использую logback. Итак, как минимум в моем logback.xml, чтобы получить ссылки на мои классы, я включил в свой шаблон сообщения
.\(%class{0}.java:%line\)
-
.\( \)
→ Точка должна предшествовать имени файла: шаблон строки и имя файла: шаблон строки, заключенный в круглые скобки. В этом случае для возврата в журнал требуются буквенные круглые скобки.
-
%class{0}
→ Просто имя класса без пакета
-
.java
→ Чтобы он соответствовал полному имени файла
-
:%line
→ Является ли строка журнала кода
В действительности у меня есть другие вещи, которые всегда включают как минимум один .
до части (filename:line)
, поэтому он также подбирается IntelliJ.
<pattern>%highlight(%-5level) %d{yyyy-MM-dd'T'HH:mm:ss.SSS} %yellow([%thread]) %blue(%logger{36}\(%class{0}.java:%line\)) %msg%n</pattern>
Ответ 3
Вы можете определить свои собственные выходные фильтры или распечатать пути к файлам с номерами строк, разделенными двоеточием, либо полными путями, либо путями относительно источника проекта корни.
Пользовательский выходной фильтр может использовать следующие переменные: $FILE_PATH$
, $LINE$
.
Ответ 4
Чтобы сделать вещи ДЕЙСТВИТЕЛЬНО, вам нужно выполнить полную нотацию стоп-кадра. Как его НЕ ДОЛЖНО просто поставить точку "." перед кронштейнами. Если у вас есть два класса с одинаковым именем, но с разными пакетами, IntelliJ выберет первое, что он найдет. Чтобы заставить эту работу ПРАВИЛЬНО даже в этом случае вам нужно написать
fullqualifiedclassname + "." + methodname + "(" + simpleclassname + ".java:" + linenumber + ")"
Если вы не знаете номер строки, используя ": 1", я работал у меня
Ответ 5
Чтобы завершить ответ @JasonDunkelberger, после ошибок и проб, я получил лучшее регулярное исключение, которое Intellij, вероятно, анализирует, чтобы найти, где разместить гиперссылки:
(at )?+.*\..*\(.*?\)
В ответе @JasonDunkelberger, в некоторых случаях, если после ссылки есть круглые скобки или две буквы "at", ссылка не активируется.
Ответ 6
после некоторых испытаний я получил работоспособную настройку в весеннем загрузочном проекте с Intelligent IDEA ULIMATE 2017.3.2 и logback 1.2.3
Настройки в logback-spring.xml примерно такие:
<configuration>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(at %class.%method){cyan} \\(%file:%line\\) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
</configuration>
% clr (в% class.% метод) {cyan}\(% file:% line \)
это решение
Ответ 7
Установите потрясающую консоль IntelliJ Plugin с Marketplace: https://plugins.jetbrains.com/plugin/7677-awesome-console
Тогда все в вашем терминале, включая сбои сборки maven для классов Java, также будет активным.