【发布时间】:2015-02-19 15:24:10
【问题描述】:
我在 Akka (2.3.9) 应用程序中使用 Logback 时遇到了一些问题。为了登录到标准输出和日志文件,我指定了带有所有附加程序的 logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds" debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>%X{akkaTimestamp} %-5level %logger{36} %X{sourceThread} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./akka.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./akka.log.%d{yyyy-MM-dd-HH}</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%X{akkaTimestamp} %-5level %logger{36} %X{sourceThread} - %msg%n</pattern>
</encoder>
</appender>
<logger name="proc" level="INFO">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="akka.actor" level="INFO">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="INFO">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
之后我使用登录我的 Actor:
val log = Logging(context.system, classOf[MyActor])
override def receive: Receive = {
case MyEvent(event) =>
log.info("Message received for processing.")
}
问题是,在 SBT 中一切都很好:我可以在创建的日志文件中看到所有日志事件。
当我使用 sbt-assembly 制作 JAR-File 并启动此 jar 文件时(java -jar event-assembly-0.1.1-SNAPSHOT.jar)。应用程序将日志条目写入 STDOUT 但不在文件中!
我不知道如何解决这个问题。我试过“lsof”,java进程没有打开的日志文件。
【问题讨论】: