当前位置 : 主页 > 编程语言 > java >

Spring Integration对系统日志支持

来源:互联网 收集:自由互联 发布时间:2023-02-04
Spring Integration 2.2 引入了 syslog 转换器: .​​SyslogToMapTransformer​​ 您需要将此依赖项包含在项目中: dependency groupIdorg.springframework.integration/groupId artifactIdspring-integration-syslog/artifactId

Spring Integration对系统日志支持_系统日志

Spring Integration 2.2 引入了 syslog 转换器: .​​SyslogToMapTransformer​​

您需要将此依赖项包含在项目中:

<dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-syslog</artifactId> <version>6.0.0</version></dependency>

此转换器与 或入站适配器一起可用于接收和分析来自其他主机的系统日志记录。 转换器创建一个消息有效负载,其中包含系统日志消息中的元素映射。​​UDP​​​​TCP​​

Spring Integration 3.0 引入了方便的命名空间支持,用于在单个元素中配置 syslog 入站适配器。

从版本 4.1.1 开始,框架现在支持 RFC 5424> 中指定的扩展系统日志格式。 此外,使用 TCP 和 RFC5424 时,支持 RFC 6587 中所述的两者。​​octet counting​​​​non-transparent framing​​

系统日志入站通道适配器

此元素包含一个或入站通道适配器和一个用于将系统日志消息转换为 Spring 集成消息的适配器。 的委托,创建一条消息,其有效负载为 of syslog 字段。 此外,除消息之外的所有字段也可作为消息中的标头提供,并以 . 在此模式下,仅支持 RFC 3164 (BSD) 系统日志。​​UDP​​​​TCP​​​​MessageConverter​​​​DefaultMessageConverter​​​​SyslogToMapTransformer​​​​Map​​​​syslog_​​

从版本 4.1 开始,具有一个名为 的属性(默认值为 )。 如果是,转换器将消息有效负载保留为原始的完整系统日志消息(在 中),同时仍设置标头。​​DefaultMessageConverter​​​​asMap​​​​true​​​​false​​​​byte[]​​

从版本 4.1.1 开始,通过使用 . 在这种情况下,字段不会作为标头复制,除非设置为 ,在这种情况下,原始消息是有效负载,解码的字段是标头。​​RFC5424MessageConverter​​​​asMap​​​​false​​

要将 RFC 5424 与 TCP 传输一起使用,必须提供其他配置以启用 RFC 6587 中描述的不同成帧技术。 适配器需要一个配置有 . 默认情况下,此反序列化程序处理并使用换行符 (LF) 分隔系统日志消息。 它使用未检测到的时间。 要使用不同的成帧,您可以为其提供一些其他反序列化程序。 虽然反串器可以同时支持两者,但仅支持后者的一种形式。 如果 在转换器上,则必须在 中设置构造函数参数。​​RFC6587SyslogDeserializer​​​​octet counting​​​​non-transparent framing​​​​ByteArrayLfSerializer​​​​octet counting​​​​non-transparent​​​​octet counting​​​​non-transparent framing​​​​asMap​​​​false​​​​retainOriginal​​​​RFC6587SyslogDeserializer​​

配置示例

以下示例定义了一个将消息发送到通道的适配器(适配器 Bean 名称为 ):​​UDP​​​​syslogIn​​​​syslogIn.adapter​​

<int-syslog:inbound-channel-adapter id="syslogIn" port="1514" />

适配器侦听端口 。​​1514​​

以下示例定义了一个将消息发送到通道的适配器(适配器 Bean 名称为 ):​​UDP​​​​fromSyslog​​​​syslogIn​​

<int-syslog:inbound-channel-adapter id="syslogIn" channel="fromSyslog" port="1514" />

适配器侦听端口 。​​1514​​

以下示例定义了一个将消息发送到通道的适配器(适配器 Bean 名称为 ):​​TCP​​​​syslogIn​​​​syslogIn.adapter​​

<int-syslog:inbound-channel-adapter id="bar" protocol="tcp" port="1514" />

适配器侦听端口 。​​1514​​

请注意属性的添加。 此属性可以包含 或 。 默认为 .​​protocol​​​​udp​​​​tcp​​​​udp​​

以下示例显示了将消息发送到通道的适配器:​​UDP​​​​fromSyslog​​

<int-syslog:inbound-channel-adapter id="udpSyslog" channel="fromSyslog" auto-startup="false" phase="10000" converter="converter" send-timeout="1000" error-channel="errors"> <int-syslog:udp-attributes port="1514" lookup-host="false" /></int-syslog:inbound-channel-adapter>

前面的示例还显示了两个属性:和 。 它具有对 ID 为 和 . 另请注意子元素。 您可以在此处设置各种 UDP 属性,如 中所定义。UDP 入站通道适配器属性。​​SmartLifecycle​​​​auto-startup​​​​phase​​​​org.springframework.integration.syslog.MessageConverter​​​​converter​​​​error-channel​​​​udp-attributes​​

使用元素时,必须在此处提供属性,而不是在元素本身上提供属性。​​udp-attributes​​​​port​​​​inbound-channel-adapter​​

以下示例显示了将消息发送到通道的适配器:​​TCP​​​​fromSyslog​​

<int-syslog:inbound-channel-adapter id="TcpSyslog" protocol="tcp" channel="fromSyslog" connection-factory="cf" /><int-ip:tcp-connection-factory id="cf" type="server" port="1514" />

它还演示如何引用外部定义的连接工厂,该工厂可用于高级配置(套接字保持活动状态和其他用途)。 有关详细信息,请参阅 TCP 连接工厂。

外部配置必须是 类型,并且端口是在那里定义的,而不是在元素本身上定义的。​​connection-factory​​​​server​​​​inbound-channel-adapter​​

以下示例显示了将消息发送到通道的适配器:​​TCP​​​​fromSyslog​​

<int-syslog:inbound-channel-adapter id="rfc5424Tcp" protocol="tcp" channel="fromSyslog" connection-factory="cf" converter="rfc5424" /><int-ip:tcp-connection-factory id="cf" using-nio="true" type="server" port="1514" deserializer="rfc6587" /><bean id="rfc5424" class="org.springframework.integration.syslog.RFC5424MessageConverter" /><bean id="rfc6587" class="org.springframework.integration.syslog.inbound.RFC6587SyslogDeserializer" />

前面的示例配置为使用转换器,并配置了对具有反序列化程序的外部定义的连接工厂的引用(RFC 5424 需要)。​​RFC 5424​​​​RFC 6587​​

上一篇:Spring Integration的TCP 和 UDP 支持
下一篇:没有了
网友评论