日志回传显示带有行号的日志

2022-09-01 11:32:51

我想写日志像这样:

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

然后一切都有效。所以我的配置一定有问题。
任何人都可以帮我吗?谢谢。我想像我想要的那样显示,并且在方法名称和行号之间没有空格。


答案 1

日志回滚手册指出

在 PatternLayout 中,括号可用于对转换模式进行分组。因此,“(”和“)”具有特殊含义,如果打算用作文字,则需要转义。括号的特殊性质将在下文进一步解释。

[...]

如果需要将括号字符视为文本,则需要在每个括号前面加上反斜杠来对其进行转义。如 中所示, .\(%d{HH:mm:ss.SSS} [%thread]\)

您需要用 .\

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

答案 2

对于任何偶然发现此页面以了解如何在 application.properties 文件中配置此内容的人来说,我通过添加两个反斜杠成功地转义了括号。

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

推荐