是否可以在IntelliJ的控制台输出中具有可单击的类名?

时间:2011-10-28 14:47:31

标签: intellij-idea

当您在IntelliJ内部运行服务器时,您可以在屏幕底部的窗口中看到控制台输出。

有没有办法格式化输出,以便IntelliJ识别类名并使它们可点击?然后,当我在服务器输出中看到一个类名时,我可以点击它然后直接去那里。

谢谢:)

8 个答案:

答案 0 :(得分:24)

从IntelliJ 14开始,以及通过IntelliJ设置进行挖掘的替代方案,一些试验和错误显示出任何具有模式的内容

(anyfile.ext:line)
控制台中至少有一个.前面的

会变成文件链接,如果该名称已知任何文件,例如.(Whatever.java:55),在工作区中,不包括库。

我正在使用logback。所以至少在我的logback.xml中获取我的类的链接,我包含在我的消息模式中

.\(%class{0}.java:%line\)
  • .\( \) - >一个点必须在文件名前面:行模式和文件名:括在括号中的行模式。在这种情况下,Logback要求转义字面括号。
  • %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>

答案 1 :(得分:8)

有。取自在线帮助http://www.jetbrains.com/idea/webhelp/setting-log-options.html

  

如果您使用的是第三方日志记录工具,则可能需要使用   消息的输出,模仿与源代码的标准链接   for stacktrace line(at   (:))。   为此,您应该将特定的转换模式添加到log.xml   配置文件。例如,在log4j转换模式中   会是

<param name="ConversionPattern" value="%-5p - [%-80m] - at %c.%M(%F:%L)%n"/>

然而,使用完全限定的名称,方法名等,产生的输出非常难看。

答案 2 :(得分:0)

为了使事情真正起作用,您需要遵守完整的堆栈跟踪表示法。就像它不足以简单地点“。”在括号前面。如果您有两个具有相同名称但不同包的类,IntelliJ将选择它找到的第一个类。为了使这个工作正常,即使在这种情况下你需要写

fullyqualifiedclassname +“。” + methodname +“(”+ simpleclassname +“。java:”+ linenumber +“)”

如果您不知道使用“:1”为我工作的行号

答案 3 :(得分:0)

要完成@JasonDunkelberger的回答,在错误和试验之后,我得到了一个更好的常规异常,Intellij可能正在解析以找到放置超链接的位置:

(at )?+.*\..*\(.*?\)

在@JasonDunkelberger的回答中,在某些情况下,如果链接后有一些括号,或者两个字母'at',则链接不会激活。

答案 4 :(得分:0)

经过一些试验,我在春季启动项目中有了可行的设置,使用了Intellig 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(at%class。%method){cyan} \(%file:%line \)
是解决方案

答案 5 :(得分:0)

从市场上安装IntelliJ插件真棒控制台:https://plugins.jetbrains.com/plugin/7677-awesome-console

然后,您终端中的所有内容(包括Java类的Maven构建失败)都可以单击。

答案 6 :(得分:0)

根据官方文档,https://www.jetbrains.com/help/idea/setting-log-options.html

我将其设置如下(我正在使用登录):

<Pattern>%d %-5level - at %class.%M\(%file:%line\) - %msg %replace(%ex){'[\r\n]+', ''}%nopex%n</Pattern>

有点hacky,但是可以。

示例日志输出:

2020-03-02 19:42:36,636 INFO - at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) - FrameworkServlet 'bea': initialization started 2020-03-02 19:42:36,779 INFO - at org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:581) - Refreshing WebApplicationContext for namespace 'bea-servlet': startup date [Mon Mar 02 19:42:36 IST 2020]; root of context hierarchy

答案 7 :(得分:0)

样式类似:

fullfileLoction :10也可以。

例如:

对于Mac OS

/ Users / myname / myjava / myproject / src / main / com /.../ Main.java:10