如何对齐SLF4J Log输出?

问题描述 投票:0回答:2

出于测试目的,默认日志输出的行太长,难以阅读。

目前,我只想有一个缩写类并将输出提供给

log.info
并使其在
---
符号上对齐。

我目前只是这种格式:

logging.pattern.console=%c{1}           --- %m%n

我猜

%n
表示“新行”,
%c
表示“类”,
{1}
缩写完全限定名称(这很好)。我得到的输出是:

d.e.e.Eva04p2Beanlifecycle           --- No active profile set, falling back to default profiles: default
d.e.e.s.SmallService           --- doBeforeInitializing before upadating ... what's my personal name? frieda
d.e.e.s.SmallService           --- doBeforeInitializing ... what's my personal name? marga
d.e.e.Eva04p2Beanlifecycle           --- Started Eva04p2Beanlifecycle in 0.628 seconds (JVM running for 0.824)
d.e.e.s.SmallService           --- doSomething ... what's my personal name? marga
d.e.e.s.SmallService           --- doBeforeDestroying ... what's my personal name? elisa

使用这些类型的说明:

@PostConstruct
public void doBeforeInitializing() {
    log.info("doBeforeInitializing before upadating ... what's my personal name? " + myPersonalName);
    myPersonalName = "marga";
    log.info("doBeforeInitializing ... what's my personal name? " + myPersonalName);
}

public void doSomething() {
    log.info("doSomething ... what's my personal name? " + myPersonalName);
}

@PreDestroy
public void doBeforeDestroying() {
    myPersonalName = "elisa";
    log.info("doBeforeDestroying ... what's my personal name? " + myPersonalName);
}

我需要更改什么,以便所有

---
打印时彼此对齐?

java logging logback slf4j
2个回答
0
投票

正如上面的评论中提到的,slf4j 不控制日志输出的格式 - 这是由您正在使用的日志记录实现完成的(slf4j 只是一个外观/抽象,而不是一个实现)。在 Spring Boot 应用程序中,默认的日志记录实现是 logback,logback 的模式格式化程序支持左右填充“列”以及设置最小和最大宽度。这些格式化选项一起可以满足您的要求。

我建议您阅读文档并确定您想要的格式,而不是给您确切的格式。有很多可能的组合需要考虑,该页面甚至有示例来帮助确定您想要的组合。


0
投票

logback 文档太长了。这是您正在寻找的部分。

Logback 可以配置为在固定长度字段中打印类名,通过在

%
之后添加修饰符来用空格填充其余部分。

最长类名的长度是 26。我们可以将该值添加到格式中,但这会使其右对齐,这对我来说对于此数据来说看起来不正确。

我希望此数据左对齐,因此我还添加了

-

您帖子中的示例:

logging.pattern.console=%c{1}           --- %m%n

修改为在固定长度字段中打印类名:

logging.pattern.console=%-26c{1}           --- %m%n

现在类名后面的数据将均匀对齐,因为类名都占用相同的空间:

d.e.e.Eva04p2Beanlifecycle           --- No active profile set, falling back to default profiles: default
d.e.e.s.SmallService                 --- doBeforeInitializing before upadating ... what's my personal name? frieda

这是一个链接 logback 文档中关于固定长度字段的具体部分

© www.soinside.com 2019 - 2024. All rights reserved.