I would suggest you use the Level[1] class instead of a raw int for setting the level.
[1]: http://www.slf4j.org/apidocs/org/apache/log4j/Level.html jvz On 2012-12-15, at 7:57 PM, [email protected] wrote: > Updated Branches: > refs/heads/master 915b1553f -> 39e11cf2e > > > extracted Slf4jConfiguration interface and corresponding implementation > to clearly separate code depending on slf4j binding > > still need to add automatic selection of implementation > > Project: http://git-wip-us.apache.org/repos/asf/maven/repo > Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/39e11cf2 > Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/39e11cf2 > Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/39e11cf2 > > Branch: refs/heads/master > Commit: 39e11cf2e51a41fc47001f0fe59da251dab87587 > Parents: 73ffdaf > Author: Hervé Boutemy <[email protected]> > Authored: Sun Dec 16 01:57:36 2012 +0100 > Committer: Hervé Boutemy <[email protected]> > Committed: Sun Dec 16 01:57:36 2012 +0100 > > ---------------------------------------------------------------------- > .../main/java/org/apache/maven/cli/MavenCli.java | 12 ++- > .../cli/logging/AbstractSlf4jConfiguration.java | 46 +++++++++++ > .../maven/cli/logging/Slf4jConfiguration.java | 35 ++++++++ > .../cli/logging/impl/Slf4jSimpleConfiguration.java | 62 +++++++++++++++ > 4 files changed, 151 insertions(+), 4 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/maven/blob/39e11cf2/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java > ---------------------------------------------------------------------- > 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 e744e65..e3c62f8 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 > @@ -39,8 +39,10 @@ import org.apache.maven.InternalErrorException; > import org.apache.maven.Maven; > import org.apache.maven.cli.event.DefaultEventSpyContext; > import org.apache.maven.cli.event.ExecutionEventLogger; > +import org.apache.maven.cli.logging.Slf4jConfiguration; > import org.apache.maven.cli.logging.Slf4jLoggerManager; > import org.apache.maven.cli.logging.Slf4jStdoutLogger; > +import org.apache.maven.cli.logging.impl.Slf4jSimpleConfiguration; > import org.apache.maven.cli.transfer.ConsoleMavenTransferListener; > import org.apache.maven.cli.transfer.QuietMavenTransferListener; > import org.apache.maven.cli.transfer.Slf4jMavenTransferListener; > @@ -131,6 +133,8 @@ public class MavenCli > > private DefaultSecDispatcher dispatcher; > > + private Slf4jConfiguration slf4jConfiguration = new > Slf4jSimpleConfiguration(); > + > public MavenCli() > { > this( null ); > @@ -306,24 +310,24 @@ public class MavenCli > if ( cliRequest.debug ) > { > cliRequest.request.setLoggingLevel( > MavenExecutionRequest.LOGGING_LEVEL_DEBUG ); > - System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", > "debug" ); > + slf4jConfiguration.setRootLoggerLevel( > MavenExecutionRequest.LOGGING_LEVEL_DEBUG ); > } > else if ( cliRequest.quiet ) > { > cliRequest.request.setLoggingLevel( > MavenExecutionRequest.LOGGING_LEVEL_ERROR ); > - System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", > "error" ); > + slf4jConfiguration.setRootLoggerLevel( > MavenExecutionRequest.LOGGING_LEVEL_ERROR ); > } > else > { > cliRequest.request.setLoggingLevel( > MavenExecutionRequest.LOGGING_LEVEL_INFO ); > - System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", > "info" ); > + slf4jConfiguration.setRootLoggerLevel( > MavenExecutionRequest.LOGGING_LEVEL_INFO ); > } > > if ( cliRequest.commandLine.hasOption( CLIManager.LOG_FILE ) ) > { > File logFile = new File( cliRequest.commandLine.getOptionValue( > CLIManager.LOG_FILE ) ); > logFile = resolveFile( logFile, cliRequest.workingDirectory ); > - System.setProperty( "org.slf4j.simpleLogger.logFile", > logFile.getAbsolutePath() ); > + slf4jConfiguration.setLoggerFile( logFile ); > try > { > PrintStream ps = new PrintStream( new FileOutputStream( > logFile ) ); > > http://git-wip-us.apache.org/repos/asf/maven/blob/39e11cf2/maven-embedder/src/main/java/org/apache/maven/cli/logging/AbstractSlf4jConfiguration.java > ---------------------------------------------------------------------- > diff --git > a/maven-embedder/src/main/java/org/apache/maven/cli/logging/AbstractSlf4jConfiguration.java > > b/maven-embedder/src/main/java/org/apache/maven/cli/logging/AbstractSlf4jConfiguration.java > new file mode 100644 > index 0000000..2b2ef6d > --- /dev/null > +++ > b/maven-embedder/src/main/java/org/apache/maven/cli/logging/AbstractSlf4jConfiguration.java > @@ -0,0 +1,46 @@ > +package org.apache.maven.cli.logging; > + > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +import java.io.File; > + > +import org.slf4j.Logger; > +import org.slf4j.LoggerFactory; > + > +/** > + * Abstract implementation. > + * > + * @author Hervé Boutemy > + */ > +public class AbstractSlf4jConfiguration > + implements Slf4jConfiguration > +{ > + private final Logger logger = LoggerFactory.getLogger( > AbstractSlf4jConfiguration.class ); > + > + public void setRootLoggerLevel( int level ) > + { > + logger.warn( "setRootLoggerLevel: operation not supported" ); > + } > + > + public void setLoggerFile( File output ) > + { > + logger.warn( "setLoggerFile: operation not supported" ); > + } > +} > > http://git-wip-us.apache.org/repos/asf/maven/blob/39e11cf2/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java > ---------------------------------------------------------------------- > 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 > new file mode 100644 > index 0000000..c988bd8 > --- /dev/null > +++ > b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java > @@ -0,0 +1,35 @@ > +package org.apache.maven.cli.logging; > + > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +import java.io.File; > + > +/** > + * Interface for configuration operations on loggers, which are not > available in slf4j, then require per-slf4f-binding > + * implementation. > + * > + * @author Hervé Boutemy > + */ > +public interface Slf4jConfiguration > +{ > + void setRootLoggerLevel( int level ); > + > + void setLoggerFile( File output ); > +} > > http://git-wip-us.apache.org/repos/asf/maven/blob/39e11cf2/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java > ---------------------------------------------------------------------- > 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 > new file mode 100644 > index 0000000..c5d60d8 > --- /dev/null > +++ > b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java > @@ -0,0 +1,62 @@ > +package org.apache.maven.cli.logging.impl; > + > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +import java.io.File; > + > +import org.apache.maven.cli.logging.AbstractSlf4jConfiguration; > +import org.apache.maven.cli.logging.Slf4jConfiguration; > +import org.apache.maven.execution.MavenExecutionRequest; > +import org.codehaus.plexus.component.annotations.Component; > + > +/** > + * Configuration for slf4j-simple. > + * > + * @author Hervé Boutemy > + */ > +@Component( role = Slf4jConfiguration.class ) > +public class Slf4jSimpleConfiguration > + extends AbstractSlf4jConfiguration > +{ > + public void setRootLoggerLevel( int level ) > + { > + String value = "info"; > + switch ( level ) > + { > + case MavenExecutionRequest.LOGGING_LEVEL_DEBUG: > + value = "debug"; > + break; > + > + case MavenExecutionRequest.LOGGING_LEVEL_INFO: > + value = "info"; > + break; > + > + case MavenExecutionRequest.LOGGING_LEVEL_ERROR: > + value = "error"; > + break; > + } > + System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", value > ); > + } > + > + public void setLoggerFile( File output ) > + { > + System.setProperty( "org.slf4j.simpleLogger.logFile", > output.getAbsolutePath() ); > + } > +} >
