【问题标题】:log to separate files using logback and apache camel routes使用 logback 和 apache 骆驼路由记录到单独的文件
【发布时间】: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");

我认为&amp;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


    【解决方案1】:

    您可以设置记录器名称,并可能添加一个监听该名称并写入文件的附加程序。

    http://camel.apache.org/logeip.html

    例子:

    from("direct:start").log(LoggingLeven.DEBUG, org.slf4j.LoggerFactory.getLogger("com.mycompany.mylogger"), "Processing ${id}").to("bean:foo");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2014-08-03
      相关资源
      最近更新 更多