登录不工作?? JSON 未生成
Logback is not working?? The JSON is not generated
我有这些 Maven 依赖文件:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.1</version>
</dependency>
和logback.xml放在资源文件夹中。
logback.xml 是(由于 Whosebug 格式,类名分两行):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="stacktrace"
converterClass="net.logstash.logback.stacktrace.
ShortenedThrowableConverter" />
<appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">
<encoder
class="net.logstash.logback.encoder.
LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"timestamp": "%date{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"msg": "%msg",
"stacktrace": "%stacktrace"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="info">
<appender-ref ref="JSON"/>
</root>
</configuration>
日志是这样的:
14:34:23,782 INFO [x.y.Logger] (default task-15) Hello world!
日志没有以JSON格式输出。为什么?
我在想根本就是 Logback 运行。应用启动时Logback是如何启动的?我没有任何代码行调用它。我读过 Logback 扫描 logback.xml,但我怎么知道它是 运行??
Logback 在新的 Spring 引导应用程序中运行良好,但此应用程序是旧的 JEE 应用程序。
问题是什么?
试试这个编码器配置:
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
<timestampPattern>yyyy-MM-dd HH:mm:ss.SSS</timestampPattern>
<providers>
<timestamp/>
<logLevel/>
<message/>
<stacktrace/>
</providers>
</encoder>
我必须添加
jboss-部署-structure.xml 在 EAR META-INF.
文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
</jboss-deployment-structure>
我有这些 Maven 依赖文件:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.1</version>
</dependency>
和logback.xml放在资源文件夹中。
logback.xml 是(由于 Whosebug 格式,类名分两行):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="stacktrace"
converterClass="net.logstash.logback.stacktrace.
ShortenedThrowableConverter" />
<appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">
<encoder
class="net.logstash.logback.encoder.
LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"timestamp": "%date{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"msg": "%msg",
"stacktrace": "%stacktrace"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="info">
<appender-ref ref="JSON"/>
</root>
</configuration>
日志是这样的:
14:34:23,782 INFO [x.y.Logger] (default task-15) Hello world!
日志没有以JSON格式输出。为什么?
我在想根本就是 Logback 运行。应用启动时Logback是如何启动的?我没有任何代码行调用它。我读过 Logback 扫描 logback.xml,但我怎么知道它是 运行??
Logback 在新的 Spring 引导应用程序中运行良好,但此应用程序是旧的 JEE 应用程序。
问题是什么?
试试这个编码器配置:
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
<timestampPattern>yyyy-MM-dd HH:mm:ss.SSS</timestampPattern>
<providers>
<timestamp/>
<logLevel/>
<message/>
<stacktrace/>
</providers>
</encoder>
我必须添加
jboss-部署-structure.xml 在 EAR META-INF.
文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
</jboss-deployment-structure>