2014-06-12 50 views
2

我想用Scala監視一個日誌文件。日誌的具體問題是,您還需要能夠考慮logrotation(這是Linux尾部的基本功能之一)。Scala拖尾文件的方式

我知道純Java有Tailer,但我想知道是否有類似的Scala實現。

回答

4

從它的外觀很容易包裝在斯卡拉。

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的東西非常強大,所以使用它可能是一個好主意!