【发布时间】:2016-10-04 22:24:00
【问题描述】:
我想将 apache 骆驼路由消息(HL7 格式)记录到与标准日志文件分开的特定文件中。如何从.to(log: 路由中识别日志附加程序?
也就是说,我知道在 java 中你可以调用 LoggerFactory.getLogger("hl7Logger"); 之类的东西并以这种方式记录到特定的日志,但我不知道如何在骆驼路线中做到这一点。
这是我所拥有的:
logback-spring.xml
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>90</maxHistory>
</rollingPolicy>
<encoder>
<charset>utf-8</charset>
<Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
</encoder>
</appender>
<appender name="HL7-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>hl7_messages_logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>90</maxHistory>
</rollingPolicy>
<encoder>
<charset>utf-8</charset>
<Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
</encoder>
</appender>
...
<logger name="hl7Logger" level="DEBUG" additivity="false">
<appender-ref ref="HL7-FILE"/>
</logger>
<root level="@logback.loglevel@">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
示例路线:
from("direct:complete")
.log("Processing complete ${id}")
.to("log:com.pavilionhealth.integration.messaging.complete?showAll=true&multiline=true&level=DEBUG&logger=hl7Logger")
.to("hl7Complete");
我认为&logger=hl7Logger 可能是需要的,但似乎没有记录任何内容。两个日志文件都已创建,但没有写入 hl7_messages_logFile.2016-06-05.log 仅填充主日志文件
到目前为止,我已经利用了以下这些:
Logback to log different messages to two files
http://camel.apache.org/log.html
任何帮助都会非常感激。
编辑:
刚刚找到了一种方法,但肯定有更优雅的解决方案。
我找到了这篇文章,因此使用自定义处理器做了类似的事情。
static Logger LOG = LoggerFactory.getLogger("hl7Logger");
...
from("direct:update")
.process(new Processor() {
public void process(Exchange msg) {
LOG.info("Processing {}", msg);
}
})
.to("hl7Update");
但这并不完美,因为它没有以.to(log: 所做的漂亮格式推送消息
【问题讨论】:
标签: java apache-camel logback