Googled, but the java version dominates ...

Thread.currentThread().getStackTrace()[2].getLineNumber 

but in the worksheet returns always 5 , in the work project scala/playframework 2.5 - always 35

I tried to play with the уровнем , nothing meaningful не вышло .

    1 answer 1

    I figured out, for example, create services/Log.scala

     package services object Log { def info(text: String) = { val systemStr = makeSystemStr Console.out.println(Console.BLUE + "[INFO] " + systemStr + Console.RESET + text) } def makeSystemStr() = { val fileName = Thread.currentThread().getStackTrace()(3).getFileName val lineNumber = Thread.currentThread().getStackTrace()(3).getLineNumber val cnArr = Thread.currentThread().getStackTrace()(3).getClassName.split("[$]") val pkgName = cnArr(0).split("[.]")(0) val name = cnArr(0).split("[.]")(1) val defName = cnArr(3) s"$pkgName : $fileName : $name : $defName : line $lineNumber - " } } 

    And you can use, for example:

     package controllers import play.api.mvc._ import services.Log class SomeCtrl extends Controller { def Index = Action { request => Log.info("какой то текст лога") Ok("ok") } }