当您在IntelliJ内部运行服务器时,您可以在屏幕底部的窗口中看到控制台输出。
有没有办法格式化输出,以便IntelliJ识别类名并使它们可点击?然后,当我在服务器输出中看到一个类名时,我可以点击它然后直接去那里。
谢谢:)
答案 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