logback显示带行号的日志

时间:2014-04-17 03:10:49

标签: java logging log4j logback

我想写日志,如:

2014-04-17 11:00:16.408 [http-apr-9090-exec-4] DEBUG package.method(line) - log.

所以我在模式中配置logback.xml,配置如:

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M(%line) - %msg%n

除了行号之外,每件事都显示,如果我添加像

这样的设置
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M %line - %msg%n

然后一切正常。所以我的配置一定有问题。
谁能帮助我?谢谢。我希望显示我想要的内容,方法名称和行号之间没有空格。

4 个答案:

答案 0 :(得分:36)

Logback manual

  

在PatternLayout中,括号可用于分组转换   图案。 接下来是'('和')'具有特殊意义和   如果打算用作文字,则需要进行转义。特殊   括号的性质将在下面进一步说明。

     

[...]

     

如果您需要将括号字符视为文字,则需要   使用反斜杠在每个括号前面进行转义。如,   \(%d{HH:mm:ss.SSS} [%thread]\)

您需要使用\转义括号。

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M\(%line\) - %msg%n

答案 1 :(得分:1)

为任何偶然发现此页面以寻找如何在application.properties文件中进行配置的用户提供的注释,我成功地通过添加两个反斜杠来转义了括号。

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M \\(%line\\) - %msg%n

答案 2 :(得分:0)

对于控制台日志记录,我使用:

<Pattern>%black(%date{"yyyy-MM-dd HH:mm:ss.SSS", "Europe/London"}) %highlight(%-5level) [%green(%X{sessionId})] %yellow(%logger{36}@%method\(%line\)) - %msg%n%throwable</Pattern>

并记录到文件:

 <pattern>[%date{"yyyy-MM-dd HH:mm:ss,SSSXXX", "Europe/London"}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>

答案 3 :(得分:0)

如果要获取日志消息,可以在其中单击指向源代码的链接,例如在IntelliJ中,使用以下模式在IDE内部进行控制台日志记录:

<pattern>
    %d{dd-MM-yyyy HH:mm:ss.SSS} %highlight(%-5level) %magenta([%thread]) %yellow(%logger{40}.%M\(%class{0}.java:%line\)) - %msg%throwable%n
</pattern>