当前位置: 首页 > 知识库问答 >
问题:

Spring Integration DSL:禁用AbstractMessageHandler中的双调试日志记录

柯曜文
2023-03-14
...
.<DataDTO>log(LoggingHandler.Level.DEBUG, "Http Input Flow V2",          
              message -> {
                 DataDTO dto = message.getPayload();
                 return "Input data: " + dto.toString;
              })
...
@Override
public void handleMessage(Message<?> message) {
    ...
    if (this.loggingEnabled && this.logger.isDebugEnabled()) {
        this.logger.debug(this + " received message: " + message);
    }
    ...
 }

AbstractMessageHandler中,This.LoggingEnabled默认设置为True

是否可以禁用AbstractMessageHandler中的日志记录,但保留自定义日志消息?我试图将application.yml中的AbstractMessageHandler的日志记录级别设置为Error,但这没有帮助。

共有1个答案

李谦
2023-03-14

我认为您的日志配置类似于org.springframework.integration=debug,甚至org.springframework=debug

字面上的“HTTP Input Flow v2”对于类别来说有点尴尬:

   /**
     * Populate a {@link WireTap} for the {@link #currentMessageChannel}
     * with the {@link LoggingHandler} subscriber for the provided
     * {@link LoggingHandler.Level} logging level, logging category
     * and {@link Function} for the log message.
     * @param level the {@link LoggingHandler.Level}.
     * @param category the logging category.
     * @param function the function to evaluate logger message at runtime
     * @param <P> the expected payload type.
     * against the request {@link Message}.
     * @return the current {@link IntegrationFlowDefinition}.
     * @see #wireTap(WireTapSpec)
     */
    public <P> B log(LoggingHandler.Level level, String category, Function<Message<P>, Object> function) {

此外,@enableIntegrationManagement可以禁用LoggingEnabled及其:

/**
 * Use to disable all logging in the main message flow in framework components. When 'false', such logging will be
 * skipped, regardless of logging level. When 'true', the logging is controlled as normal by the logging
 * subsystem log level configuration.
 * <p>
 * It has been found that in high-volume messaging environments, calls to methods such as
 * {@code logger.isDebuggingEnabled()} can be quite expensive and account for an inordinate amount of CPU
 * time.
 * <p>
 * Set this to false to disable logging by default in all framework components that implement
 * {@link IntegrationManagement} (channels, message handlers etc). This turns off logging such as
 * "PreSend on channel", "Received message" etc.
 * <p>
 * After the context is initialized, individual components can have their setting changed by invoking
 * {@link IntegrationManagement#setLoggingEnabled(boolean)}.
 * @return the value; true by default.
 */
String defaultLoggingEnabled() default "true";
 类似资料:
  • 这也许是一个很简单的问题。如何禁用Hikari-CP调试日志?在我的日志文件我有很多这样的消息 在我的日志4jconfig中。xml: 有人能告诉我记录器配置有什么问题吗? 谢谢!

  • 一般来说,你应该在运行时增加调试选项来调试问题;也可以把调试选项添加到 Ceph 配置文件里来调试启动问题,然后查看 /var/log/ceph (默认位置)下的日志文件。 Tip 调试输出会拖慢系统,这种延时有可能掩盖竞争条件。 日志记录是资源密集任务。如果你碰到的问题在集群的某个特定区域,只启用那个区域对应的日志功能即可。例如,你的 OSD 运行良好、元数据服务器却不行,这时应该先打开那个可疑

  • 我们正在使用PDFBox进行一些PDF阅读和操作。但是在解析过程中,我收到了一堆这样的消息: 现在我如何禁用这些?因为如果字体被嵌入,这样的消息会在输入的每个字符上输出,因此日志文件变得非常不可用。 现在,更改总体日志级别不是一个选项,因为我需要来自其他组件的语句。 我使用的是Tomcat 5.5、log4j 1.2.16和pdfbox app 1.6.0 这是我的log4j配置文件: 编辑 修改

  • 问题内容: 我只是想在我的项目中禁用Restlet的日志到stdout / stderr,并通过org.restlet.ext.slf4j提供的SLF4J门面转发所有Restlet日志。是否有捷径可寻? 问题答案: 首先,您必须配置SLF4J来拦截Restlet对java.util.logging API的所有调用,并将它们映射到SLF4J Facade的API上的调用。您只需将jul-to- s

  • 我正在开发一个简单的桌面应用程序(不是webapp)。 它们有不同的模式。好像他们忽略了我的设置。 我也试着应用我在这里找到的建议: https://spring.io/blog/2009/12/04/logging-dependencies-in-spring

  • 问题内容: 我有一些使用该软件包的工具化代码。现在该关闭日志记录了,我无法确定如何关闭标准记录器。 我错过了什么吗?我应该在进行日志调用之前检查标志,还是在生产中将其注释掉? 问题答案: 要完全禁用日志,最好调用Joril并将输出设置为无操作(例如) 但即使在此之后,操作仍将闲置约500-600 ns / op 1 这仍然可切断短路(左右 为100 ns / OP )通过使用自定义的实现,并实现所