From 68e7c924429c45e26c1f5ad67df89fbaf4354a3a Mon Sep 17 00:00:00 2001 From: thinkAfCod Date: Tue, 5 Dec 2023 17:48:42 +0800 Subject: [PATCH] feat: config log level by option --- .../src/main/java/io/optimism/cli/Cli.java | 13 +++++++++++- .../cli/typeconverter/LogLevelConverter.java | 21 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 hildr-node/src/main/java/io/optimism/cli/typeconverter/LogLevelConverter.java diff --git a/hildr-node/src/main/java/io/optimism/cli/Cli.java b/hildr-node/src/main/java/io/optimism/cli/Cli.java index e15d7b7a..9a254f7d 100644 --- a/hildr-node/src/main/java/io/optimism/cli/Cli.java +++ b/hildr-node/src/main/java/io/optimism/cli/Cli.java @@ -16,7 +16,9 @@ package io.optimism.cli; +import ch.qos.logback.classic.Level; import io.micrometer.tracing.Tracer; +import io.optimism.cli.typeconverter.LogLevelConverter; import io.optimism.cli.typeconverter.SyncModeConverter; import io.optimism.common.HildrServiceExecutionException; import io.optimism.config.Config; @@ -112,13 +114,22 @@ public class Cli implements Runnable { Integer metricsPort; @Option(names = "--devnet", description = "Dev net flag") - private Boolean devnet; + Boolean devnet; + + @Option( + names = "--log-level", + defaultValue = "DEBUG", + converter = LogLevelConverter.class, + description = "Log level") + Level logLevel; /** the Cli constructor. */ public Cli() {} @Override public void run() { + var logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + logger.setLevel(logLevel); TracerTaskWrapper.setTracerSupplier(Logging.INSTANCE::getTracer); if (Boolean.TRUE.equals(metricsEnable)) { var metricsPort = this.metricsPort; diff --git a/hildr-node/src/main/java/io/optimism/cli/typeconverter/LogLevelConverter.java b/hildr-node/src/main/java/io/optimism/cli/typeconverter/LogLevelConverter.java new file mode 100644 index 00000000..7f3cfaa3 --- /dev/null +++ b/hildr-node/src/main/java/io/optimism/cli/typeconverter/LogLevelConverter.java @@ -0,0 +1,21 @@ +package io.optimism.cli.typeconverter; + +import ch.qos.logback.classic.Level; +import picocli.CommandLine; + +/** + * the Log Level converter, used for picocli parse args. + * + * @author thinkAfCod + * @since 0.2.0 + */ +public class LogLevelConverter implements CommandLine.ITypeConverter { + + /** the LogLevelConverter constructor. */ + public LogLevelConverter() {} + + @Override + public Level convert(String value) throws Exception { + return Level.valueOf(value); + } +}