此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

通常与窃听器结合使用,如窃听器中所述。 但是,它也可以用作任何流的最终使用者。 例如,假设一个以 a 结尾的流返回一个结果,但您希望放弃该结果。 为此,您可以将结果发送到 。 或者,您可以将其路由到关卡 。 这样,您可以在级别上登录时看到丢弃的消息,但在(例如)级别上登录时看不到它。 使用 ,在级别上记录时,您将只看到丢弃的消息。 以下列表显示了该元素的所有可能属性:<logging-channel-adapter><service-activator>NullChannelINFO<logging-channel-adapter>INFOWARNNullChannelDEBUGlogging-channel-adapterSpring中文文档

<int:logging-channel-adapter
    channel="" (1)
    level="INFO" (2)
    expression="" (3)
    log-full-message="false" (4)
    logger-name="" /> (5)
1 将日志记录适配器连接到上游组件的通道。
2 将记录发送到此适配器的消息的日志记录级别。 违约:。INFO
3 一个 SpEL 表达式,准确表示要记录消息的哪些部分。 默认值: — 仅记录有效负载。 如果指定,则无法指定此属性。payloadlog-full-message
4 当 时,将记录整个消息(包括标头)。 默认值: — 仅记录有效负载。 如果指定了此属性,则无法指定此属性。truefalseexpression
5 指定记录器的 (称为 )。 用于标识此适配器创建的日志消息。 这样就可以设置单个适配器的日志名称(在日志记录子系统中)。 默认情况下,所有适配器都以以下名称进行记录:。namecategorylog4jorg.springframework.integration.handler.LoggingHandler
1 将日志记录适配器连接到上游组件的通道。
2 将记录发送到此适配器的消息的日志记录级别。 违约:。INFO
3 一个 SpEL 表达式,准确表示要记录消息的哪些部分。 默认值: — 仅记录有效负载。 如果指定,则无法指定此属性。payloadlog-full-message
4 当 时,将记录整个消息(包括标头)。 默认值: — 仅记录有效负载。 如果指定了此属性,则无法指定此属性。truefalseexpression
5 指定记录器的 (称为 )。 用于标识此适配器创建的日志消息。 这样就可以设置单个适配器的日志名称(在日志记录子系统中)。 默认情况下,所有适配器都以以下名称进行记录:。namecategorylog4jorg.springframework.integration.handler.LoggingHandler

使用 Java 配置

以下 Spring Boot 应用程序显示了使用 Java 配置配置的示例:LoggingHandlerSpring中文文档

@SpringBootApplication
public class LoggingJavaApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context =
             new SpringApplicationBuilder(LoggingJavaApplication.class)
                    .web(false)
                    .run(args);
         MyGateway gateway = context.getBean(MyGateway.class);
         gateway.sendToLogger("foo");
    }

    @Bean
    @ServiceActivator(inputChannel = "logChannel")
    public LoggingHandler logging() {
        LoggingHandler adapter = new LoggingHandler(LoggingHandler.Level.DEBUG);
        adapter.setLoggerName("TEST_LOGGER");
        adapter.setLogExpressionString("headers.id + ': ' + payload");
        return adapter;
    }

    @MessagingGateway(defaultRequestChannel = "logChannel")
    public interface MyGateway {

        void sendToLogger(String data);

    }

}

使用 Java DSL 进行配置

以下 Spring Boot 应用程序显示了使用 Java DSL 配置日志记录通道适配器的示例:Spring中文文档

@SpringBootApplication
public class LoggingJavaApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context =
             new SpringApplicationBuilder(LoggingJavaApplication.class)
                    .web(false)
                    .run(args);
         MyGateway gateway = context.getBean(MyGateway.class);
         gateway.sendToLogger("foo");
    }

    @Bean
    public IntegrationFlow loggingFlow() {
        return IntegrationFlow.from(MyGateway.class)
                     .log(LoggingHandler.Level.DEBUG, "TEST_LOGGER",
                           m -> m.getHeaders().getId() + ": " + m.getPayload());
    }

    @MessagingGateway
    public interface MyGateway {

        void sendToLogger(String data);

    }

}