我继承了一个 apache Camel Spring Boot 应用程序,但在日志记录方面遇到了问题。 路由组件使用 lombok.extern.slf4j.Slf4j 注释进行注释。 正常日志工作正常,但路由中的日志不工作:
@Slf4j
@Component
public class MyRoute extends RouteBuilder {
@Override
public void configure() {
log.info("Working normally");
from("direct:source")
.log("Not working")
.to("direct:target");
}
}
logback.xml文件的内容是:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/Logging/Logback/base.xml"/>
<logger name="com.myapp" level="INFO"/>
<logger name="com.apache.camel" level="INFO"/>
<logger name="org.springframework.boot" level="INFO"/>
<logger name="org.springframework.web" level="INFO"/>
<logger name="com.netflix" level="INFO"/>
<logger name="com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver" level="WARN"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>$(APP_HOME}/logs/myapp-${spring.profiles.active).log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRolling Policy">
<fileNamePattern>$[APP_HOME}/logs/archive/myapp-${spring.profiles.active]-%d{yyyy-MM-dd).log.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<root level="ERROR">
<appender-ref ref="FILE"/>
</root>
</configuration>
所以,路由中的日志不起作用。如果,我在路由中执行内联处理器并使用 slf4j log.info() 进行日志记录,则可以正常工作。
Camel 路由中的
log
(不起作用)使用route_id 作为记录器名称。您可以将其更改为您选择的名称。 log.info是直接调用logger框架,常见的是使用类名作为日志名。
查看日志EIP文档 https://camel.apache.org/components/4.4.x/eips/log-eip.html