2014-06-12 2 views
2

스칼라를 사용하여 로그 파일을 모니터링하고 싶습니다. 로그의 특정 문제점은 로그 회전을 고려해야한다는 것입니다 (Linux 테일의 필수 기능 중 하나임).스칼라 방식의 파일 테일링

순수한 Java의 경우 Tailer이 있지만 비슷한 스칼라 구현이 있는지 궁금합니다.

답변

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) 

이것은 아마도 스칼라 구현이없는 이유 일 것입니다. 게다가, 아파치 코 몬즈 물건 꽤 강력합니다, 그래서 아마 그것을 사용하는 것이 좋습니다!