From 61e7176a51f008f94b0e011c8f18f7a05757f13d Mon Sep 17 00:00:00 2001 From: edge790 Date: Mon, 4 Jul 2022 01:47:23 +0300 Subject: [PATCH 1/4] Fix #79. Changed from default StreamHandler to FlushingStreamHandler which flushes after every log statement --- .../revanced/cli/logging/impl/DefaultCliLogger.kt | 3 +-- .../cli/logging/impl/FlushingStreamHandler.kt | 13 +++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/app/revanced/cli/logging/impl/FlushingStreamHandler.kt diff --git a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt index a433c4eb..6ad492c9 100644 --- a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt +++ b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt @@ -4,7 +4,6 @@ import app.revanced.cli.command.MainCommand import app.revanced.cli.logging.CliLogger import java.util.logging.Logger import java.util.logging.SimpleFormatter -import java.util.logging.StreamHandler internal class DefaultCliLogger( private val logger: Logger = Logger.getLogger(MainCommand::javaClass.name), @@ -13,7 +12,7 @@ internal class DefaultCliLogger( init { logger.useParentHandlers = false - logger.addHandler(StreamHandler(System.out, SimpleFormatter())) + logger.addHandler(FlushingStreamHandler(System.out, SimpleFormatter())) } companion object { init { diff --git a/src/main/kotlin/app/revanced/cli/logging/impl/FlushingStreamHandler.kt b/src/main/kotlin/app/revanced/cli/logging/impl/FlushingStreamHandler.kt new file mode 100644 index 00000000..4bfb3941 --- /dev/null +++ b/src/main/kotlin/app/revanced/cli/logging/impl/FlushingStreamHandler.kt @@ -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() + } +} \ No newline at end of file From f062d6e6dce87ee255bb78512b5ae972c49cf698 Mon Sep 17 00:00:00 2001 From: edge790 Date: Sun, 10 Jul 2022 20:40:29 +0300 Subject: [PATCH 2/4] Added removal of handlers, so they will not be duplicated. --- .../kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt index 6ad492c9..011c7714 100644 --- a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt +++ b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt @@ -12,8 +12,10 @@ internal class DefaultCliLogger( init { logger.useParentHandlers = false + logger.handlers.forEach { logger.removeHandler(it) } logger.addHandler(FlushingStreamHandler(System.out, SimpleFormatter())) } + companion object { init { System.setProperty("java.util.logging.SimpleFormatter.format", "%4\$s: %5\$s %n") From 1c78ab2c036ad3f5d9cfe590c5034cc9b69118b1 Mon Sep 17 00:00:00 2001 From: edge790 Date: Sun, 10 Jul 2022 21:00:13 +0300 Subject: [PATCH 3/4] 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. --- .../app/revanced/cli/logging/impl/DefaultCliLogger.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt index 011c7714..90300447 100644 --- a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt +++ b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt @@ -7,13 +7,14 @@ import java.util.logging.SimpleFormatter internal class DefaultCliLogger( private val logger: Logger = Logger.getLogger(MainCommand::javaClass.name), - private val errorLogger: Logger = Logger.getLogger(MainCommand::javaClass.name + "Err") + private val errorLogger: Logger = Logger.getLogger(logger.name + "Err") ) : CliLogger { init { logger.useParentHandlers = false - logger.handlers.forEach { logger.removeHandler(it) } - logger.addHandler(FlushingStreamHandler(System.out, SimpleFormatter())) + if (logger.handlers.isEmpty()) { + logger.addHandler(FlushingStreamHandler(System.out, SimpleFormatter())) + } } companion object { From dc4304f209bb672aa67c7ae24b35d7817f0fa1e4 Mon Sep 17 00:00:00 2001 From: edge790 Date: Sun, 10 Jul 2022 21:22:35 +0300 Subject: [PATCH 4/4] Replaced calls ::javaClass.name to ::class.java.name to have proper class names in loggers --- .../kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt | 2 +- .../app/revanced/cli/patcher/logging/impl/PatcherLogger.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt index 90300447..db9306ae 100644 --- a/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt +++ b/src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt @@ -6,7 +6,7 @@ import java.util.logging.Logger import java.util.logging.SimpleFormatter 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(logger.name + "Err") ) : CliLogger { diff --git a/src/main/kotlin/app/revanced/cli/patcher/logging/impl/PatcherLogger.kt b/src/main/kotlin/app/revanced/cli/patcher/logging/impl/PatcherLogger.kt index 172fa9b3..11c04a79 100644 --- a/src/main/kotlin/app/revanced/cli/patcher/logging/impl/PatcherLogger.kt +++ b/src/main/kotlin/app/revanced/cli/patcher/logging/impl/PatcherLogger.kt @@ -4,7 +4,7 @@ import app.revanced.cli.logging.impl.DefaultCliLogger import java.util.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 info(msg: String) = logger.info(msg)