Scala日志记录,将控制台输出直接输出到日志文件

时间:2017-07-31 16:20:58

标签: scala scala-logging

是否可以使用scala日志记录将控制台输出定向到日志文件。在下面的代码中println写入控制台是有办法将其指向log-file作为定义的logback.xml。

import com.typesafe.scalalogging.LazyLogging

object FileProcessing extends LazyLogging  {

  def  main(args: Array[String]): Unit = {
    val fp = new FileProcessing
    logger.info(fp.fileMoves.toString())
    println("My desired directory is - "+fp.dir)   
  }
}

使用下面的scala记录我的build.gradle

compile "ch.qos.logback:logback-classic:1.1.7"
compile "com.typesafe.scala-logging:scala-logging_2.12:3.5.0"

1 个答案:

答案 0 :(得分:2)

println写信给Console.out。你可以给它任何你想要的流。例如:

Console.withOut(new PrintStream(new FileOutputStream("/dev/null"))) {
  println("this will not be printed anywhere")
}
Console.withOut(new PrintStream(new FileOutputStream("console.txt"))) {
  println("this is printed to console.txt")
}
println("This still goes to stdout")

您还可以使用(不建议使用的)Console.setOut全局更改输出流,但这不是一个好主意(就像任何其他想法一样,涉及在运行时更改全局JVM状态)。在这种情况下,最好只在命令行上使用> console.txt运行程序。

请注意,如果其他人(除了println / Console也写入同一个文件),您获得的结果可能不会是您喜欢的,因为缓冲和赛车)。