喷涂应用程序slf4j记录到控制台,而不是文件

时间:2014-04-29 11:03:37

标签: logging akka slf4j logback spray

我在akka documentaion中提到了一个配置了日志记录的应用程序

akka {
  version="2.3.0"
  loglevel = "DEBUG"
  event-handlers = ["akka.event.slf4j.Slf4jLogger"]
}

和资源目录中的logback.xml:

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="false" debug="false">
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{ISO8601} %-5level [%logger{36}] [%X{akkaSource}] [%X{sourceThread}] [%X{traceId}] : %m%n</pattern>
        </encoder>
    </appender>
    <appender name="R" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>log/info.log</File>
        <encoder>
            <pattern>%date{ISO8601} %-5level [%logger{36}] [%X{akkaSource}] [%X{sourceThread}] : %m%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${atmos.dir}/atmos.log.%d{yyyy-MM-dd-HH}</fileNamePattern>
        </rollingPolicy>
    </appender>
    <logger name="org.eclipse.jetty.util.log" level="INFO"/>
    <!-- Play2: Off these ones as they are annoying, and anyway we manage configuration ourself -->
    <logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
    <logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
    <logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />

    <root level="INFO">
        <!--<appender-ref ref="stdout"/>-->
        <appender-ref ref="R"/>
    </root>
</configuration>

由于某种原因,我只有来自外部依赖关系的日志转到info.log文件,并且使用ActorLoggin特征进行的所有记录都打印到控制台。

这让我疯狂,实际上并不知道我在做错了什么......

任何建议都将受到赞赏......

1 个答案:

答案 0 :(得分:0)

要在单独的文件中启用Spray REST请求 - 响应的记录,我使用以下设置:

1)在Akka配置中:"spray.util.log-actor-paths-with-dots":"on"

2)在Logback配置中:

<logger name="akka.actor.path.separated.by.Dots" level="INFO">
  <appender-ref ref="REST-FILE"/>
</logger>
代码中的

3)logRequestResponse指令