Scala 拖尾文件的方式

标签 scala

我想使用 Scala 监视日志文件。日志的具体问题是您还需要能够考虑日志轮换(这是 Linux tail 的基本功能之一)。

我知道对于纯Java有Tailer ,但我想知道是否有类似的 Scala 实现。

最佳答案

从外观上看,用 Scala 包装起来很容易。

object ScalaTailer {
   private val DefaultBufSize = 4096

   def apply(file: File, onFileNotFound: => Unit = (), onFileRotated: => Unit = (),
              handleException: Exception => Unit = (), handleLine: String => Unit = (),
              delayMillis: Long = 1000, end: Boolean = false, reOpen: Boolean = false,
              bufSize: Int = DefaultBufSize) = {
     val listener = new TailerListener {
        override def fileNotFound() = onFileNotFound
        override def fileRotated() = onFileRotated
        override def handle(ex: Exception) = handleException(ex)
        override def handle(line: String) = handeLine(line)
     }
     new Tailer(file, listener, delayMillis, end, reOpen, bufSize)
  }
}

val tailer = ScalaTailer(myFile, handleLine = println)

这可能就是它没有 Scala 实现的原因。此外,Apache Commons 的东西非常强大,所以使用它可能是个好主意!

关于Scala 拖尾文件的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179203/

相关文章:

scala - 如何解决 "Error:scalac: bad symbolic reference to scala.ScalaObject encountered in class file ' package.class'”?

file - Scala - 按文件后缀名从文件夹中删除文件

list - 将列表的元素与所有其他元素进行比较

scala - 如何在 play 2.4 上安装 ReactiveMongo?

algorithm - 为Akka Actor 池排序了共享邮箱或总线?

scala - 凿子3.功能模块MUX4

scala - <this> 上的中缀调用不起作用

scala - 让 Future 值进入不接受 future 的案例类构造函数的最佳方法是什么?

scala - 不兼容的 Jackson 版本 : Spark Structured Streaming

java - 仅在 Spark 中可见的 Shapeless 中的 NoSuchMethodError