Akka SLF4J logback 配置和使用 [英] Akka SLF4J logback configuration and usage

查看:51
本文介绍了Akka SLF4J logback 配置和使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已完成以下步骤来尝试为我的 akka 应用程序配置日志记录:

  • 创建了一个 application.conf 文件并将其放置在 src/main/resources 中.看起来像:

    <代码>阿卡{事件处理程序 = ["akka.event.slf4j.Slf4jEventHandler"]日志级别 = "信息"}

  • 创建了一个 logback.xml 文件并将其放置在 src/main/resources 中.看起来像:

    <预><代码><配置><appender name="FILE" class="ch.qos.logback.core.fileappender"><文件>./logs/akka.log</File><编码器><pattern>%d{HH:mm:ss.SSS} [%-5level] %msg%n</pattern></编码器></appender><root level="信息"><appender-ref ref="文件"/></root></配置>

  • 将以下内容添加到我的 .scala sbt 构建文件中:

    <代码>
    libraryDependencies += "com.typesafe.akka" % "akka-slf4j" % "2.0.3",libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.9"懒惰的 val logback = "ch.qos.logback" % "logback-classic" % "1.0.9"

  • 尝试记录此代码:

    <代码>导入 akka.event.Logging
    val log = Logging(context.system, this)log.info("...")

我得到的只是标准输出日志记录,没有使用日志创建日志文件.

我错过了一步吗?还是配置错误?

解决方案

这样安排我就可以使用 akka.event.Logging,无需指定 SLF4J 实例.

(2013 年 12 月 13 日测试)

我得到控制台日志记录并记录到文件.为了证明这不是内置记录器,我更改为包含 %X{akkaTimestamp},如下所述:

http://doc.akka.io/docs/akka/snapshot/scala/logging.html

build.sbt

库依赖:(Akka 2.2.3 版)..."com.typesafe.akka" %% "akka-slf4j" % "2.2.3"ch.qos.logback"%logback-经典"%1.0.9"...

src/main/resources/application.conf

akka {记录器 = ["akka.event.slf4j.Slf4jLogger"]日志级别 = "信息"}

src/main/resources/logback.xml

当我使用 ActorLogging mixin 并直接创建 Logging 时,这种安排有效:

import akka.event.Loggingval log = Logging(context.system, classOf[NameOfYourActor])log.info("祝你好运!")

I have done the following steps to try and configure logging for my akka application:

  • created an application.conf file and placed it in src/main/resources. It looks like:

    
        akka { 
          event-handlers = ["akka.event.slf4j.Slf4jEventHandler"] 
          loglevel = "INFO"
        }
    

  • created a logback.xml file and placed it in src/main/resources. It looks like:

    <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>
    

  • added the following to my .scala sbt build file:


    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"

  • attempted this code to log:

    
        import akka.event.Logging
    val log = Logging(context.system, this) log.info("...")

All I am getting is standard output logging, no log file creation with the logs.

Have I missed a step ? Or misconfigured something?

解决方案

With this arrangement I can use an akka.event.Logging, no need to specify SLF4J instance.

(tested 13 Dec 2013)

I get console logging and logging to a file. To prove this is not built-in logger I changed to include %X{akkaTimestamp} as explained here:

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/main/resources/application.conf

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "INFO"
}

src/main/resources/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>

This arrangement works when I use an ActorLogging mixin and also create a Logging directly:

import akka.event.Logging

val log = Logging(context.system, classOf[NameOfYourActor])

log.info("good luck!")

这篇关于Akka SLF4J logback 配置和使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆