Scala中的akka​​.event.Logging格式配置

时间:2019-07-17 13:58:34

标签: scala logging format akka logback

我正在尝试设置Scala应用程序的日志格式。

我有兴趣设置一些“额外”字段,这些字段会在执行流程期间生成的所有日志中设置并自动写入。

我已经看到可以在src / main / resources下设置一个logback.xml文件,该文件包含我想遵循的格式,但是到目前为止我还没有设置如何设置额外字段的方法。

例如,假设我的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}| %-6level| %logger{36}| %X{sourceActorSystem} %X{hostname} | %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="akka" level="debug" />    
    <root level="debug">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

我有兴趣设置我添加的%X {hostname}。
为此,我应该做类似的事情:

    final DiagnosticLoggingAdapter log = Logging.getLogger(this);
    Map<String, Object> mdc;
    mdc = new HashMap<String, String>();
    mdc.put("hostname", "myhostname");
    log.setMDC(mdc);

我已经通过以下方式定义了我的界面:

trait MyCore{
  var log1: DiagnosticLoggingAdapter
  implicit val system = MdsActorSystem.system
  implicit val materializer = MdsActorSystem.materializer
  implicit val executionContext = system.dispatcher
  val log = Logging.getLogger(system, this)
}

如何将Logging.getLogger更改为DiagnosticLoggingAdapter ??????
据我所知,这是唯一可用于放置额外字段的对象。

那格式化方法呢?

Logging.getLogger(system, this).format(t:String, Arg: Any*) 

0 个答案:

没有答案