我有一个在 docker 容器中运行的 Spring Boot 应用程序。使用 slf4j + logback 配置的日志记录。应用程序日志写入 Logstash,同时显示在容器控制台上。是否可以仅关闭特定类的控制台输出?例如 com.hazelcast.internal.diagnostics.HealthMonitor 写道:
2018-12-26 08:59:39.068 INFO 1 --- [s.HealthMonitor] c.h.internal.diagnostics.HealthMonitor :
processors=6, physical.memory.total=17.5G, physical.memory.free=1.8G, swap.space.total=7.9G,
swap.space.free=4.7G, heap.memory.used=586.6M, heap.memory.free=1.4G, heap.memory.total=2.0G,
heap.memory.max=2.0G, heap.memory.used/total=29.21%, heap.memory.used/max=29.21%, minor.gc.count=26,
...
我想将此类日志保留在 Logstash 中,但禁用它们以进行控制台输出。
当前的 logback-spring.xml 配置包含:
...
<configuration scan="true">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="LOGSTASH" class="ch.qos.logback.classic.net.SocketAppender">
<remoteHost>host</remoteHost>
<port>port</port>
<reconnectionDelay>10000</reconnectionDelay>
</appender>
<logger name="com.hazelcast.internal.diagnostics.HealthMonitor" level="INFO">
<appender-ref ref="LOGSTASH"/>
</logger>
...
</configuration>
但是,日志仍然显示在控制台中
决定这样:
base.xml用default.xml正确的类的过滤器 替换了导入并制作了我的附加程序......HealthMonitorFilter.java: