SystemStreamHandler.kt

package com.hexagontk.jul

import java.io.PrintStream
import java.util.logging.Formatter
import java.util.logging.Level
import java.util.logging.LogRecord
import java.util.logging.StreamHandler

/**
 * Create a StreamHandler with a given [Formatter].
 *
 * @param handlerFormatter Formatter used by the log handler.
 */
internal class SystemStreamHandler(
    handlerFormatter: Formatter,
    stream: PrintStream = System.out
) : StreamHandler() {

    override fun publish(record: LogRecord) {
        super.publish(record)
        flush()
    }

    init {
        setOutputStream(stream)
        formatter = handlerFormatter
        level = Level.ALL
    }
}