【问题标题】:Disable INFO level logging for Spring boot websocket MessageBroker logs禁用 Spring boot websocket MessageBroker 日志的 INFO 级别日志记录
【发布时间】:2017-09-19 05:43:45
【问题描述】:

我有一个使用 SockJs 启用 Websocket 的 Spring Boot 应用程序。一切正常,但它一直在控制台中记录以下消息。

2017-09-19 11:04:48.164  INFO 8856 --- [MessageBroker-4] o.s.w.s.c.WebSocketMessageBrokerStats    : WebSocketSession[1 current WS(1)-HttpStream(0)-HttpPoll(0), 3 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(3)-CONNECTED(3)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 45], outboundChannelpool size = 0, active threads = 0, queued tasks = 0, completed tasks = 22], sockJsScheduler[pool size = 4, active threads = 1, queued tasks = 2, completed tasks = 65909]

日志的意义是什么?如何才能只禁用这些类型的日志记录?

【问题讨论】:

  • 您可以将日志级别升级为 ERROR/WARN 以禁用 INFO 日志
  • 我希望仅为此禁用 INFO 日志,而不是为其他人禁用

标签: java logging spring-boot spring-websocket sockjs


【解决方案1】:

尝试在application.properties中使用以下配置:

logging.level.org.springframework.web.socket.config.WebSocketMessageBrokerStats = ERROR

这将升级这个特定类的日志。

【讨论】:

  • 这将起作用,但记录此问题的计划任务仍将在后台运行。应该禁用它以防止不必要的资源使用。
【解决方案2】:

我想根据@Dino 的评论改进this answer,因为这个解决方案确实不显示日志但它不会禁用任务并且不会阻止不必要的资源使用。

为防止不必要的资源使用,请使用以下实现:

@Configuration
public class WebSocketLoggingConfigurer {

    @Autowired
    private WebSocketMessageBrokerStats webSocketMessageBrokerStats;

    @PostConstruct
    public void init() {
        webSocketMessageBrokerStats.setLoggingPeriod(0);
    }

}

现在不用application.properties修改日志级别了。

【讨论】:

    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多