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
9条答案
按热度按时间jc3wubiy1#
从IntelliJ 14开始,除了挖掘IntelliJ设置之外,一些试验和错误显示任何具有该模式的东西
控制台中前面至少有一个
.
的文件,如果在工作区(不包括库的文件)中有该名称的已知文件(例如.(Whatever.java:55)
),则会转换为文件链接。我正在使用logback,所以至少在我的logback.xml中获取到我包含在消息模式中的类的链接
.\( \)
-〉必须在文件名:行模式和用括号括起来的文件名:行模式前面加一个点。在这种情况下,Logback要求对文字括号进行转义。%class{0}
-〉只有类名,没有包.java
-〉以便与完整的文件名匹配:%line
-〉是日志记录代码行实际上,我还有其他一些东西,它们总是在
(filename:line)
部分之前至少包含一个.
,所以IntelliJ也会选择它。mctunoxg2#
有。取自联机帮助http://www.jetbrains.com/idea/webhelp/setting-log-options.html
如果使用的是第三方日志记录工具,则可能需要生成消息输出,模拟stacktrace行(.(:))的源代码标准链接。为此,应将特定的转换模式添加到log.xml配置文件中。例如,在log4j转换模式中,这将是
然而,products的输出非常难看,有完全限定名、方法名等。
gc0ot86w3#
要使事情真正工作,你需要遵守完整的stacktrace表示法。就像它是不够的,只是把一个点“.”在前面的括号。如果你有两个类具有相同的名称,但不同的包,IntelliJ将选择它找到的第一个。为了使它正确地工作,即使在这种情况下,你需要写
完全限定类名+“.”+方法名+“(“+简单类名+“.java:“+行号+“)”
如果您不知道行号,请使用“:1”
cwtwac6a4#
为了完成@JasonDunkelberger的回答,在错误和尝试之后,我得到了一个更好的常规异常,Intellij可能正在解析该异常以找到放置超链接的位置:
在@JasonDunkelberger的回答中,在某些情况下,如果链接后面有一些括号,或者两个字母“at”,链接就不会激活。
w1jd8yoj5#
经过一些试验,我得到了一个可行的设置在Spring Boot 项目,与IntelliJ IDEA ULIMATE 2017.3.2和logback 1.2.3
logback-spring.xml中的设置如下所示:
%clr(位于%class.%方法){青色} \(%文件:%行\)
就是解决方案
z6psavjg6#
从Marketplace安装IntelliJ插件Awesome控制台:https://plugins.jetbrains.com/plugin/7677-awesome-console
然后,终端中的所有内容(包括Java类的maven构建失败)也都可以单击。
0qx6xfy67#
根据官方文件,https://www.jetbrains.com/help/idea/setting-log-options.html
我将其设置如下(我正在使用logback):
<Pattern>%d %-5level - at %class.%M\(%file:%line\) - %msg %replace(%ex){'[\r\n]+', ''}%nopex%n</Pattern>
有点古怪,但很管用。
日志输出示例:
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
h43kikqp8#
在使用Log4j 2/Logback转换模式时需要注意的一点是(
%class
、%M
等)的一个缺点是,它在运行时从Stacktrace进行评估,这会导致非常高的性能损失。为了解决这个问题,我开发了一个maven插件,它可以注入调用方法等信息,类甚至源代码行号添加到每个SLF 4J日志语句调用(log.info()、warn()...)中,而几乎没有性能损失:PhilKes/slf4j-caller-info-maven-plugin
fjaof16o9#
模式类似:
fullfileLoction :10
也可以。例如:
对于Mac OS
/用户/我的名字/我的java/我的项目/源代码/主/com/.../www.example.com:10Main.java :10