diff --git a/maven-slf4j-provider/pom.xml b/maven-slf4j-provider/pom.xml index 68912f566e..4bb0b2aaec 100644 --- a/maven-slf4j-provider/pom.xml +++ b/maven-slf4j-provider/pom.xml @@ -32,7 +32,7 @@ under the License. Maven SLF4J Simple Provider - Maven SLF4J provider based on SLF4J's simple provider, monkey-patched to support Maven styled colors + Maven SLF4J provider based on SLF4J's simple provider, extended to support Maven styled colors for levels and stacktraces rendering. @@ -63,6 +63,7 @@ under the License. false ${project.build.directory}/generated-sources/slf4j-simple org/slf4j/impl/*.java + org/slf4j/impl/StaticLoggerBinder* @@ -94,23 +95,6 @@ under the License. - - org.codehaus.gmaven - groovy-maven-plugin - 2.0 - - - patch-slf4j-simple - process-sources - - execute - - - ${project.basedir}/src/main/script/patch-slf4j-simple.groovy - - - - \ No newline at end of file diff --git a/maven-slf4j-provider/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/maven-slf4j-provider/src/main/java/org/slf4j/impl/StaticLoggerBinder.java new file mode 100644 index 0000000000..ba01d83226 --- /dev/null +++ b/maven-slf4j-provider/src/main/java/org/slf4j/impl/StaticLoggerBinder.java @@ -0,0 +1,89 @@ +package org.slf4j.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 org.slf4j.ILoggerFactory; +import org.slf4j.spi.LoggerFactoryBinder; + +/** + * SLF4J LoggerFactoryBinder implementation using MavenSimpleLogger. + * This class is part of the required classes used to specify an + * SLF4J logger provider implementation. + * + * @since 3.5.1 + */ +public final class StaticLoggerBinder + implements LoggerFactoryBinder +{ + /** + * Declare the version of the SLF4J API this implementation is compiled + * against. The value of this field is usually modified with each release. + */ + // to avoid constant folding by the compiler, this field must *not* be final + @SuppressWarnings( { "checkstyle:staticvariablename", "checkstyle:visibilitymodifier" } ) + public static String REQUESTED_API_VERSION = "1.7.25"; // !final + + private static final String LOGGER_FACTORY_CLASS_STR = MavenSimpleLoggerFactory.class.getName(); + + /** + * The unique instance of this class. + */ + private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder(); + + /** + * The ILoggerFactory instance returned by the {@link #getLoggerFactory} + * method should always be the same object + */ + private final ILoggerFactory loggerFactory; + + /** + * Private constructor to prevent instantiation + */ + private StaticLoggerBinder() + { + loggerFactory = new MavenSimpleLoggerFactory(); + } + + /** + * Returns the singleton of this class. + */ + public static StaticLoggerBinder getSingleton() + { + return SINGLETON; + } + + /** + * Returns the factory. + */ + @Override + public ILoggerFactory getLoggerFactory() + { + return loggerFactory; + } + + /** + * Returns the class name. + */ + @Override + public String getLoggerFactoryClassStr() + { + return LOGGER_FACTORY_CLASS_STR; + } +} diff --git a/maven-slf4j-provider/src/main/script/patch-slf4j-simple.groovy b/maven-slf4j-provider/src/main/script/patch-slf4j-simple.groovy deleted file mode 100644 index 986562512c..0000000000 --- a/maven-slf4j-provider/src/main/script/patch-slf4j-simple.groovy +++ /dev/null @@ -1,36 +0,0 @@ - -/* - * 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. - */ - -dir = new File( basedir, 'target/generated-sources/slf4j-simple/org/slf4j/impl' ); - -file = new File( dir, 'StaticLoggerBinder.java' ); -content = file.text; - -// check if already patched -if ( content.contains( 'MavenSimpleLoggerFactory' ) ) -{ - println ' slf4j-simple already patched'; - return; -} - - -println ' patching StaticLoggerBinder.java'; -content = content.replaceAll( 'SimpleLoggerFactory', 'MavenSimpleLoggerFactory' ); -file.write( content );