我做了以下措施,试图为我的阿卡应用程序配置日志记录:
创建的文件application.conf并将其置于的src /主/资源。 看起来像:
akka { event-handlers = ["akka.event.slf4j.Slf4jEventHandler"] loglevel = "INFO" }
创建一个logback.xml文件,并把它放在src /主/资源。 看起来像:
<configuration> <appender name="FILE" class="ch.qos.logback.core.fileappender"> <File>./logs/akka.log</File> <encoder> <pattern>%d{HH:mm:ss.SSS} [%-5level] %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="FILE" /> </root> </configuration>
增加了以下我.scala SBT构建文件:
libraryDependencies += "com.typesafe.akka" % "akka-slf4j" % "2.0.3", libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.9" lazy val logback = "ch.qos.logback" % "logback-classic" % "1.0.9"
试图验证码登录:
import akka.event.Logging
val log = Logging(context.system, this) log.info("...")
所有我得到的是标准的输出记录,没有创建日志文件与日志。
难道我错过了一步? 或配置错误的东西吗?
由此我可以使用akka.event.Logging,无需指定SLF4J实例。
(测试二〇一三年十二月一十三日)
我得到控制台日志记录和日志记录到文件中。 为了证明这不是内置的记录,我改变,包括%X {} akkaTimestamp如下解释:
http://doc.akka.io/docs/akka/snapshot/scala/logging.html
build.sbt
library dependencies: (Akka version 2.2.3)
...
"com.typesafe.akka" %% "akka-slf4j" % "2.2.3"
"ch.qos.logback" % "logback-classic" % "1.0.9"
...
SRC /主/资源/ application.conf
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
}
SRC /主/资源/ logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>%X{akkaTimestamp} %-5level[%thread] %logger{0} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>log/akka.log</file>
<append>false</append>
<encoder>
<pattern>%date{yyyy-MM-dd} %X{akkaTimestamp} %-5level[%thread] %logger{1} - %msg%n</pattern>
</encoder>
</appender>
<logger name="akka" level="INFO" />
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
这种安排工作时,我使用ActorLogging混入,也可以直接创建一个记录:
import akka.event.Logging
val log = Logging(context.system, classOf[NameOfYourActor])
log.info("good luck!")
我碰到这个问题也来了,但在我的情况下,它是不是类路径的问题。
我换成akka.event.Logging与com.typesafe.scalalogging.slf4j.Logging,它就像一个魅力!
我logback.xml(下主/资源):
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/filename.log</file>
<encoder>
<pattern>%date %level %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<maxIndex>10</maxIndex>
<FileNamePattern>logs/filename.log.%i.gz</FileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>20MB</maxFileSize>
</triggeringPolicy>
</appender>
<root level="info">
<appender-ref ref="FILE" />
</root>
</configuration>
我的pom.xml:
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>scalalogging-slf4j_2.10</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
并在代码:
import com.typesafe.scalalogging.slf4j.Logging
class LoggingService extends Actor with Logging {
// use logger.info() etc.
}
(没有使用application.conf)
我会在你的设置中更改的唯一的事情是添加weiglewilczek SLF4J适配器 。
我有以下设置工作得很好:
akka {
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
loglevel = DEBUG
}
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/app.%d{dd-MM-yyyy}.log</fileNamePattern>
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d [%thread] [%class] %5p - %m%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
trait test extends com.weiglewilczek.slf4s.Logging {
def logIt() {
logger.info("this logs fine")
}
}
尝试使用此application.conf:
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}
我也注意到,你可能有错误的类名的logback你配置文件附加目的地。 您有<appender name="FILE" class="ch.qos.logback.core. fileappender">
但它应该是<appender name="FILE" class="ch.qos.logback.core.FileAppender">
。
另一个问题可能是文件路径。 尝试使用绝对路径,而不是相对的。 <file>/absolute/path/testFile.log</file>
你也可以尝试修改版本的logback到1.2.3
。 下面是配置sl4j阿卡文档: 链接