fix: Log not showing in CLI (#80)

* Fix #79. Changed from default StreamHandler to FlushingStreamHandler which flushes after every log statement

* Added removal of handlers, so they will not be duplicated.

* Replaced removal of handlers with addition only in case if there are no handlers already.
Changed errorLogger name from hardcoded to reusing previous logger name, so it will have the same name if only first parameter is used.

* Replaced calls ::javaClass.name to ::class.java.name to have proper class names in loggers
This commit is contained in:
EdgE790 2022-07-11 15:25:17 +03:00 committed by GitHub
parent 6447311b0a
commit d9c5a179c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 5 deletions

View File

@ -4,17 +4,19 @@ import app.revanced.cli.command.MainCommand
import app.revanced.cli.logging.CliLogger import app.revanced.cli.logging.CliLogger
import java.util.logging.Logger import java.util.logging.Logger
import java.util.logging.SimpleFormatter import java.util.logging.SimpleFormatter
import java.util.logging.StreamHandler
internal class DefaultCliLogger( internal class DefaultCliLogger(
private val logger: Logger = Logger.getLogger(MainCommand::javaClass.name), private val logger: Logger = Logger.getLogger(MainCommand::class.java.name),
private val errorLogger: Logger = Logger.getLogger(MainCommand::javaClass.name + "Err") private val errorLogger: Logger = Logger.getLogger(logger.name + "Err")
) : CliLogger { ) : CliLogger {
init { init {
logger.useParentHandlers = false logger.useParentHandlers = false
logger.addHandler(StreamHandler(System.out, SimpleFormatter())) if (logger.handlers.isEmpty()) {
logger.addHandler(FlushingStreamHandler(System.out, SimpleFormatter()))
} }
}
companion object { companion object {
init { init {
System.setProperty("java.util.logging.SimpleFormatter.format", "%4\$s: %5\$s %n") System.setProperty("java.util.logging.SimpleFormatter.format", "%4\$s: %5\$s %n")

View File

@ -0,0 +1,13 @@
package app.revanced.cli.logging.impl
import java.io.OutputStream
import java.util.logging.Formatter
import java.util.logging.LogRecord
import java.util.logging.StreamHandler
internal class FlushingStreamHandler(out: OutputStream, format: Formatter) : StreamHandler(out, format) {
override fun publish(record: LogRecord) {
super.publish(record)
flush()
}
}

View File

@ -4,7 +4,7 @@ import app.revanced.cli.logging.impl.DefaultCliLogger
import java.util.logging.Logger import java.util.logging.Logger
internal object PatcherLogger : app.revanced.patcher.logging.Logger{ internal object PatcherLogger : app.revanced.patcher.logging.Logger{
private val logger = DefaultCliLogger(Logger.getLogger(app.revanced.patcher.Patcher::javaClass.name)) private val logger = DefaultCliLogger(Logger.getLogger(app.revanced.patcher.Patcher::class.java.name))
override fun error(msg: String) = logger.error(msg) override fun error(msg: String) = logger.error(msg)
override fun info(msg: String) = logger.info(msg) override fun info(msg: String) = logger.info(msg)