]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/logging/LogConfigurator.java
Improve log level
[signal-cli] / src / main / java / org / asamk / signal / logging / LogConfigurator.java
index 39b2315b23cbf812f4bba30a0729c78b49dde020..825495df4d9f04d96280a1f7613462735907309e 100644 (file)
@@ -6,6 +6,7 @@ import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.jul.LevelChangePropagator;
 import ch.qos.logback.classic.spi.Configurator;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.ConsoleAppender;
@@ -34,10 +35,14 @@ public class LogConfigurator extends ContextAwareBase implements Configurator {
         LogConfigurator.scrubSensitiveInformation = scrubSensitiveInformation;
     }
 
+    @Override
     public ExecutionStatus configure(LoggerContext lc) {
+        lc.addListener(new LevelChangePropagator() {{
+            setContext(lc);
+        }});
         final var rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
 
-        final var defaultLevel = verboseLevel > 1 ? Level.ALL : verboseLevel > 0 ? Level.DEBUG : Level.INFO;
+        final var defaultLevel = verboseLevel > 2 ? Level.ALL : verboseLevel > 0 ? Level.INFO : Level.WARN;
         rootLogger.setLevel(defaultLevel);
 
         final var consoleLayout = verboseLevel == 0 || logFile != null
@@ -46,18 +51,21 @@ public class LogConfigurator extends ContextAwareBase implements Configurator {
         final var consoleAppender = createLoggingConsoleAppender(lc, createLayoutWrappingEncoder(consoleLayout));
         rootLogger.addAppender(consoleAppender);
 
-        lc.getLogger("com.zaxxer.hikari")
-                .setLevel(verboseLevel > 1 ? Level.ALL : verboseLevel > 0 ? Level.INFO : Level.WARN);
+        lc.getLogger("org.asamk").setLevel(verboseLevel > 1 ? Level.ALL : verboseLevel > 0 ? Level.DEBUG : Level.INFO);
+        lc.getLogger("com.zaxxer.hikari.pool.PoolBase")
+                .setLevel(verboseLevel > 2 ? Level.ALL : verboseLevel > 1 ? Level.INFO : Level.WARN);
+        lc.getLogger("org.sqlite.core.NativeDB")
+                .setLevel(verboseLevel > 3 ? Level.ALL : verboseLevel > 1 ? Level.INFO : Level.WARN);
 
         if (logFile != null) {
             consoleAppender.addFilter(new Filter<>() {
                 @Override
                 public FilterReply decide(final ILoggingEvent event) {
-                    return event.getLevel().isGreaterOrEqual(Level.INFO)
-                            && !"LibSignal".equals(event.getLoggerName())
-                            && (
-                            event.getLevel().isGreaterOrEqual(Level.WARN) || !event.getLoggerName()
-                                    .startsWith("com.zaxxer.hikari")
+                    return !"LibSignal".equals(event.getLoggerName()) && (
+                            event.getLevel().isGreaterOrEqual(Level.WARN) || (
+                                    event.getLevel().isGreaterOrEqual(Level.INFO) && event.getLoggerName()
+                                            .startsWith("org.asamk")
+                            )
                     )
 
                             ? FilterReply.NEUTRAL : FilterReply.DENY;