我有一个简单的Scala应用程序(未使用Play MVC框架),但是使用了play.api.Logger

我试图弄清楚我需要添加的模式,以包括完成日志的文件和行。

这是我一开始就使用的logback.xml:

<configuration>

    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date %-16coloredLevel %message %n</pattern>
        </encoder>
    </appender>

    <logger name="play" level="INFO"/>
    <logger name="application" level="DEBUG"/>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>


它会显示如下内容:

2016-02-22 19:20:05,901 [debug] MY-LOG-MESSAGE


所以我尝试使用docs进行更改,结果出现了类似

<pattern>%date %-16coloredLevel %F L.%L:: %message %n</pattern>


产生的

2016-02-22 22:26:49,725 [debug] Logger.scala L.74:: MY-LOG-MESSAGE


它将File报告为play.api.Logger类文件和相应的行。

我需要写什么才能得到com.package.Clazz.scala L.10之类的东西?

编辑

marcospereira answer的输出:

有类似的东西:

2016-02-23 11:39:36,624 [info] play.api.LoggerLike$class L.93:: MESSAGE

最佳答案

您所需要的文件已很好地记录为Logback log layouts

c{length}lo{length}logger{length}


  在记录事件的起点输出记录器的名称。
  此转换字将整数作为第一个也是唯一的选择。转换器的缩写算法将缩短记录器名称,通常不会造成重大意义损失。将length选项的值设置为零是一个例外。它将使转换单词将子字符串返回到记录器名称中最右边的点字符。


Lline


  从发出记录请求的地方输出行号。
  
  生成行号信息并不是特别快。因此,除非执行速度不是问题,否则应避免使用它。


因此,您需要做的是编辑conf/logback.xml文件以更改日志模式,如下所示:

<pattern>%date %-16coloredLevel %logger L.%L:: %message %n</pattern>


注意日志模式的%logger部分。

这里可能存在的问题是,如果直接使用记录器帮助程序(play.api.Logger)(每个实例Logger.info),则该类将是play.api.LoggerLike,这是为其创建日志的类。 。当然,这对您的用例没有用,因此您可以使用如下日志:

Scala:

import play.api.Logger
import play.api.mvc.Controller

val logger = Logger(this.getClass)

logger.info("Logging a message")


Java:

import play.Logger;
import play.Logger.ALogger;
class Something {
    private static final ALogger logger = Logger.of(Something.class);

    public void whatever() {
        ...
        logger.info("some message");
        ...
    }
}

关于java - Scala Play框架:用于显示文件和行的记录器模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35565385/

10-09 04:08