Skip to content

Commit d9c5a17

Browse files
authored
fix: Log not showing in CLI (ReVanced#80)
* Fix ReVanced#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
1 parent 6447311 commit d9c5a17

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

src/main/kotlin/app/revanced/cli/logging/impl/DefaultCliLogger.kt

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@ import app.revanced.cli.command.MainCommand
44
import app.revanced.cli.logging.CliLogger
55
import java.util.logging.Logger
66
import java.util.logging.SimpleFormatter
7-
import java.util.logging.StreamHandler
87

98
internal class DefaultCliLogger(
10-
private val logger: Logger = Logger.getLogger(MainCommand::javaClass.name),
11-
private val errorLogger: Logger = Logger.getLogger(MainCommand::javaClass.name + "Err")
9+
private val logger: Logger = Logger.getLogger(MainCommand::class.java.name),
10+
private val errorLogger: Logger = Logger.getLogger(logger.name + "Err")
1211
) : CliLogger {
1312

1413
init {
1514
logger.useParentHandlers = false
16-
logger.addHandler(StreamHandler(System.out, SimpleFormatter()))
15+
if (logger.handlers.isEmpty()) {
16+
logger.addHandler(FlushingStreamHandler(System.out, SimpleFormatter()))
17+
}
1718
}
19+
1820
companion object {
1921
init {
2022
System.setProperty("java.util.logging.SimpleFormatter.format", "%4\$s: %5\$s %n")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package app.revanced.cli.logging.impl
2+
3+
import java.io.OutputStream
4+
import java.util.logging.Formatter
5+
import java.util.logging.LogRecord
6+
import java.util.logging.StreamHandler
7+
8+
internal class FlushingStreamHandler(out: OutputStream, format: Formatter) : StreamHandler(out, format) {
9+
override fun publish(record: LogRecord) {
10+
super.publish(record)
11+
flush()
12+
}
13+
}

src/main/kotlin/app/revanced/cli/patcher/logging/impl/PatcherLogger.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import app.revanced.cli.logging.impl.DefaultCliLogger
44
import java.util.logging.Logger
55

66
internal object PatcherLogger : app.revanced.patcher.logging.Logger{
7-
private val logger = DefaultCliLogger(Logger.getLogger(app.revanced.patcher.Patcher::javaClass.name))
7+
private val logger = DefaultCliLogger(Logger.getLogger(app.revanced.patcher.Patcher::class.java.name))
88

99
override fun error(msg: String) = logger.error(msg)
1010
override fun info(msg: String) = logger.info(msg)

0 commit comments

Comments
 (0)