You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2021/10/19 11:08:14 UTC
[maven] 01/01: Expose logging levels configuration
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch logger-levels-config
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 06b23410bd4421fc73c1911eb4ccb436546a3bf6
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Oct 19 13:07:26 2021 +0200
Expose logging levels configuration
This is just an example how to expose logger levels (by logger name)
to configure their levels.
---
.../main/java/org/apache/maven/cli/CLIManager.java | 5 ++++-
.../src/main/java/org/apache/maven/cli/MavenCli.java | 13 +++++++++++++
.../maven/cli/logging/BaseSlf4jConfiguration.java | 8 ++++++++
.../apache/maven/cli/logging/Slf4jConfiguration.java | 8 ++++++++
.../maven/cli/logging/impl/Log4j2Configuration.java | 8 +++++++-
.../maven/cli/logging/impl/LogbackConfiguration.java | 12 +++++++++++-
.../cli/logging/impl/Slf4jSimpleConfiguration.java | 20 +++++++++++++++++++-
7 files changed, 70 insertions(+), 4 deletions(-)
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
index e15af81..89c6783 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
@@ -110,6 +110,8 @@ public class CLIManager
public static final String COLOR = "color";
+ public static final String VERBOSE_LOGGERS = "XL";
+
/** This option is deprecated and may be repurposed as Java debug in a future version.
* Use {@code -X/--verbose} instead. */
@Deprecated
@@ -127,7 +129,7 @@ public class CLIManager
options.addOption( Option.builder( Character.toString( OFFLINE ) ).longOpt( "offline" ).desc( "Work offline" ).build() );
options.addOption( Option.builder( Character.toString( VERSION ) ).longOpt( "version" ).desc( "Display version information" ).build() );
options.addOption( Option.builder( Character.toString( QUIET ) ).longOpt( "quiet" ).desc( "Quiet output - only show errors" ).build() );
- options.addOption( Option.builder( Character.toString( VERBOSE ) ).longOpt( "verbose" ).longOpt( "verbose" ).desc( "Produce execution verbose output" ).build() );
+ options.addOption( Option.builder( Character.toString( VERBOSE ) ).longOpt( "verbose" ).desc( "Produce execution verbose output" ).build() );
options.addOption( Option.builder( Character.toString( ERRORS ) ).longOpt( "errors" ).desc( "Produce execution error messages" ).build() );
options.addOption( Option.builder( Character.toString( NON_RECURSIVE ) ).longOpt( "non-recursive" ).desc( "Do not recurse into sub-projects. When used together with -pl, do not recurse into sub-projects of selected aggregators" ).build() );
options.addOption( Option.builder( Character.toString( UPDATE_SNAPSHOTS ) ).longOpt( "update-snapshots" ).desc( "Forces a check for missing releases and updated snapshots on remote repositories" ).build() );
@@ -158,6 +160,7 @@ public class CLIManager
options.addOption( Option.builder( BUILDER ).longOpt( "builder" ).hasArg().desc( "The id of the build strategy to use" ).build() );
options.addOption( Option.builder( NO_TRANSFER_PROGRESS ).longOpt( "no-transfer-progress" ).desc( "Do not display transfer progress when downloading or uploading" ).build() );
options.addOption( Option.builder().longOpt( COLOR ).hasArg().optionalArg( true ).desc( "Defines the color mode of the output. Supported are 'auto', 'always', 'never'." ).build() );
+ options.addOption( Option.builder( VERBOSE_LOGGERS ).longOpt( "verboseLoggers" ).hasArg().desc( "Produce verbose output for loggers (comma separated list of logger names)" ).build() );
// Deprecated
options.addOption( Option.builder().longOpt( DEBUG ).desc( "Produce execution verbose output (deprecated; only kept for backward compatibility)" ).build() );
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index ead1331..44779fa 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -511,6 +511,19 @@ public class MavenCli
slf4jLoggerFactory = LoggerFactory.getILoggerFactory();
Slf4jConfiguration slf4jConfiguration = Slf4jConfigurationFactory.getConfiguration( slf4jLoggerFactory );
+ String[] verboseLoggers = null;
+ if ( cliRequest.commandLine.hasOption( CLIManager.VERBOSE_LOGGERS ) )
+ {
+ verboseLoggers = cliRequest.commandLine.getOptionValues( CLIManager.VERBOSE_LOGGERS );
+ }
+ if ( verboseLoggers != null )
+ {
+ for ( String verboseLogger : verboseLoggers )
+ {
+ slf4jConfiguration.setLoggerLevel( verboseLogger, Slf4jConfiguration.Level.DEBUG );
+ }
+ }
+
if ( cliRequest.verbose )
{
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_DEBUG );
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java
index 33c47c2..2782289 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java
@@ -33,11 +33,19 @@ public class BaseSlf4jConfiguration
{
private static final Logger LOGGER = LoggerFactory.getLogger( BaseSlf4jConfiguration.class );
+ @Override
public void setRootLoggerLevel( Level level )
{
LOGGER.warn( "setRootLoggerLevel: operation not supported" );
}
+ @Override
+ public void setLoggerLevel( final String loggerName, final Level level )
+ {
+ LOGGER.warn( "setLoggerLevel: operation not supported" );
+ }
+
+ @Override
public void activate()
{
LOGGER.warn( "reset(): operation not supported" );
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java
index 8dc81c7..8922cb9 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java
@@ -44,6 +44,14 @@ public interface Slf4jConfiguration
void setRootLoggerLevel( Level level );
/**
+ * Set logging level for given logger name.
+
+ * @param loggerName the logger name.
+ * @param level the level.
+ */
+ void setLoggerLevel( String loggerName, Level level );
+
+ /**
* Activate logging implementation configuration (if necessary).
*/
void activate();
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java
index b24ea9c..05a7f07 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java
@@ -33,6 +33,12 @@ public class Log4j2Configuration
@Override
public void setRootLoggerLevel( Level level )
{
+ setLoggerLevel( "root", level );
+ }
+
+ @Override
+ public void setLoggerLevel( final String loggerName, final Level level )
+ {
String value;
switch ( level )
{
@@ -48,7 +54,7 @@ public class Log4j2Configuration
value = "error";
break;
}
- System.setProperty( "maven.logging.root.level", value );
+ System.setProperty( "maven.logging." + loggerName + ".level", value );
}
@Override
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
index 5d9fab7..b1a918a 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
@@ -23,6 +23,8 @@ import org.apache.maven.cli.logging.BaseSlf4jConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static java.util.Objects.requireNonNull;
+
/**
* Configuration for slf4j-logback.
*
@@ -35,6 +37,14 @@ public class LogbackConfiguration
@Override
public void setRootLoggerLevel( Level level )
{
+ setLoggerLevel( Logger.ROOT_LOGGER_NAME, level );
+ }
+
+ @Override
+ public void setLoggerLevel( final String loggerName, final Level level )
+ {
+ requireNonNull( loggerName );
+ requireNonNull( level );
ch.qos.logback.classic.Level value;
switch ( level )
{
@@ -50,7 +60,7 @@ public class LogbackConfiguration
value = ch.qos.logback.classic.Level.ERROR;
break;
}
- ( (ch.qos.logback.classic.Logger) LoggerFactory.getLogger( Logger.ROOT_LOGGER_NAME ) ).setLevel( value );
+ ( ( ch.qos.logback.classic.Logger ) LoggerFactory.getLogger( loggerName ) ).setLevel( value );
}
@Override
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java
index 3961059..4996b8a 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java
@@ -23,6 +23,8 @@ import org.apache.maven.cli.logging.BaseSlf4jConfiguration;
import org.slf4j.MavenSlf4jFriend;
import org.slf4j.impl.MavenSlf4jSimpleFriend;
+import static java.util.Objects.requireNonNull;
+
/**
* Configuration for slf4j-simple.
*
@@ -35,6 +37,22 @@ public class Slf4jSimpleConfiguration
@Override
public void setRootLoggerLevel( Level level )
{
+ requireNonNull( level );
+ setSlf4jSimpleLoggerLevel( "defaultLogLevel", level );
+ }
+
+ @Override
+ public void setLoggerLevel( final String loggerName, final Level level )
+ {
+ requireNonNull( loggerName );
+ requireNonNull( level );
+ setSlf4jSimpleLoggerLevel( "log." + loggerName, level );
+ }
+
+ private void setSlf4jSimpleLoggerLevel( final String loggerName, final Level level )
+ {
+ requireNonNull( loggerName );
+ requireNonNull( level );
String value;
switch ( level )
{
@@ -50,7 +68,7 @@ public class Slf4jSimpleConfiguration
value = "error";
break;
}
- System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", value );
+ System.setProperty( "org.slf4j.simpleLogger." + loggerName, value );
}
@Override