You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/01/08 15:35:33 UTC

[maven-doxia] branch DOXIA-534 updated (fb840ba -> 5267a51)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch DOXIA-534
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git.


    omit fb840ba  [DOXIA-534] Remove Doxia Logging API
     new 5267a51  [DOXIA-534] Remove Doxia Logging API

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (fb840ba)
            \
             N -- N -- N   refs/heads/DOXIA-534 (5267a51)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/site/resources/images/doxia-deps.png | Bin 31011 -> 20465 bytes
 src/site/xdoc/index.xml                  |   4 ++--
 2 files changed, 2 insertions(+), 2 deletions(-)

[maven-doxia] 01/01: [DOXIA-534] Remove Doxia Logging API

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch DOXIA-534
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 5267a516e606173653a79350f6f214da6c02e981
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Fri Dec 31 00:06:34 2021 +0100

    [DOXIA-534] Remove Doxia Logging API
    
    This closes #80
---
 doxia-core/pom.xml                                 |   9 +-
 .../java/org/apache/maven/doxia/DefaultDoxia.java  |   5 -
 .../apache/maven/doxia/macro/AbstractMacro.java    |  28 ---
 .../java/org/apache/maven/doxia/macro/Macro.java   |   2 -
 .../maven/doxia/macro/snippet/SnippetMacro.java    |   6 +-
 .../apache/maven/doxia/parser/AbstractParser.java  |  30 ---
 .../maven/doxia/parser/AbstractXmlParser.java      |   6 +-
 .../java/org/apache/maven/doxia/parser/Parser.java |   4 +-
 .../maven/doxia/parser/Xhtml5BaseParser.java       |  83 +------
 .../apache/maven/doxia/parser/XhtmlBaseParser.java |  82 +------
 .../apache/maven/doxia/sink/impl/AbstractSink.java |  26 --
 .../maven/doxia/sink/impl/RandomAccessSink.java    |   8 -
 .../maven/doxia/sink/impl/Xhtml5BaseSink.java      |  76 +-----
 .../maven/doxia/sink/impl/XhtmlBaseSink.java       |  74 +-----
 .../org/apache/maven/doxia/util/XmlValidator.java  |  33 +--
 .../apache/maven/doxia/macro/EchoMacroTest.java    |  12 -
 .../maven/doxia/module/AbstractIdentityTest.java   |   2 -
 .../maven/doxia/parser/Xhtml5BaseParserTest.java   |   3 -
 .../maven/doxia/parser/XhtmlBaseParserTest.java    |   5 +-
 .../maven/doxia/sink/impl/AbstractSinkTest.java    |   4 -
 .../org/apache/maven/doxia/sink/impl/TextSink.java |   9 +-
 .../apache/maven/doxia/util/XmlValidatorTest.java  |   5 +-
 doxia-logging-api/pom.xml                          |  42 ----
 .../java/org/apache/maven/doxia/logging/Log.java   | 196 ---------------
 .../org/apache/maven/doxia/logging/LogEnabled.java |  40 ---
 .../maven/doxia/logging/PlexusLoggerWrapper.java   | 213 ----------------
 .../maven/doxia/logging/SystemStreamLog.java       | 271 ---------------------
 doxia-logging-api/src/site/apt/index.apt           |  27 --
 doxia-logging-api/src/site/site.xml                |  42 ----
 doxia-modules/doxia-module-apt/pom.xml             |  11 +-
 .../apache/maven/doxia/module/apt/AptParser.java   |  90 +------
 .../org/apache/maven/doxia/module/apt/AptSink.java |   6 +-
 doxia-modules/doxia-module-fml/pom.xml             |   9 +
 .../maven/doxia/module/fml/FmlContentParser.java   |  14 +-
 .../apache/maven/doxia/module/fml/FmlParser.java   |  71 +-----
 doxia-modules/doxia-module-markdown/pom.xml        |   7 +
 doxia-modules/doxia-module-xdoc/pom.xml            |   9 +
 .../apache/maven/doxia/module/xdoc/XdocParser.java |  15 +-
 .../maven/doxia/module/xdoc/XmlWriterXdocSink.java |   8 -
 doxia-modules/doxia-module-xhtml/pom.xml           |  11 +-
 .../maven/doxia/module/xhtml/XhtmlParser.java      |  14 +-
 doxia-modules/doxia-module-xhtml5/pom.xml          |   9 +
 .../maven/doxia/module/xhtml5/Xhtml5Parser.java    |  14 +-
 doxia-sink-api/pom.xml                             |   6 -
 .../java/org/apache/maven/doxia/sink/Sink.java     |   3 -
 pom.xml                                            |  19 +-
 src/site/resources/images/doxia-deps.png           | Bin 22303 -> 20465 bytes
 src/site/xdoc/doxia-deps.odg                       | Bin 12923 -> 12670 bytes
 src/site/xdoc/index.xml                            |   7 +-
 49 files changed, 184 insertions(+), 1482 deletions(-)

diff --git a/doxia-core/pom.xml b/doxia-core/pom.xml
index d6185b4..bfe68b3 100644
--- a/doxia-core/pom.xml
+++ b/doxia-core/pom.xml
@@ -39,8 +39,8 @@ under the License.
       <artifactId>doxia-sink-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.doxia</groupId>
-      <artifactId>doxia-logging-api</artifactId>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -86,6 +86,11 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
 
   </dependencies>
 
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java b/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
index dae7ec2..90fd183 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
@@ -19,7 +19,6 @@ package org.apache.maven.doxia;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.manager.ParserManager;
@@ -28,7 +27,6 @@ import org.apache.maven.doxia.sink.Sink;
 
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.io.Reader;
 
@@ -41,7 +39,6 @@ import java.io.Reader;
  */
 @Component( role = Doxia.class )
 public class DefaultDoxia
-    extends AbstractLogEnabled
     implements Doxia
 {
     @Requirement
@@ -67,8 +64,6 @@ public class DefaultDoxia
     {
         Parser parser = parserManager.getParser( parserId );
 
-        parser.enableLogging( new PlexusLoggerWrapper( getLogger() ) );
-
         parser.parse( source, sink, reference );
     }
 
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
index 391ef93..4374846 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
@@ -21,8 +21,6 @@ package org.apache.maven.doxia.macro;
 
 import java.util.Map;
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.StringUtils;
@@ -36,32 +34,6 @@ import org.codehaus.plexus.util.StringUtils;
 public abstract class AbstractMacro
     implements Macro
 {
-    /** Log instance. */
-    private Log logger;
-
-    /** {@inheritDoc} */
-    public void enableLogging( Log log )
-    {
-        this.logger = log;
-    }
-
-    /**
-     * Returns a logger for this macro.
-     * If no logger has been configured, a new SystemStreamLog is returned.
-     *
-     * @return Log
-     * @since 1.1
-     */
-    protected Log getLog()
-    {
-        if ( logger == null )
-        {
-            logger = new SystemStreamLog();
-        }
-
-        return logger;
-    }
-
     /**
      * Check if the given parameter is required. Throws an
      * IllegalArgumentException if paramValue is null or empty.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java
index be52dad..f737468 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java
@@ -19,7 +19,6 @@ package org.apache.maven.doxia.macro;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.LogEnabled;
 import org.apache.maven.doxia.sink.Sink;
 
 /**
@@ -29,7 +28,6 @@ import org.apache.maven.doxia.sink.Sink;
  * @since 1.0
  */
 public interface Macro
-    extends LogEnabled
 {
     /** The Plexus lookup role. */
     String ROLE = Macro.class.getName();
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
index cbff994..b3007a2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
@@ -27,6 +27,8 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -42,6 +44,8 @@ import java.util.Map;
 public class SnippetMacro
     extends AbstractMacro
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( SnippetMacro.class );
+
     /**
      * Holds the cache.
      */
@@ -205,7 +209,7 @@ public class SnippetMacro
             {
                 if ( ignoreDownloadError )
                 {
-                    getLog().debug( "IOException which reading " + url + ": " + e );
+                    LOGGER.debug( "Exception while reading '{}'", url, e );
                     result =
                         new StringBuffer( "Error during retrieving content skip as ignoreDownloadError activated." );
                 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
index 8520e43..ee032e7 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
@@ -27,8 +27,6 @@ import java.io.StringReader;
 
 import java.util.Properties;
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.apache.maven.doxia.macro.Macro;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
@@ -53,9 +51,6 @@ public abstract class AbstractParser
     @Requirement
     private MacroManager macroManager;
 
-    /** Log instance. */
-    private Log logger;
-
     /**
      * Emit Doxia comment events when parsing comments?
      */
@@ -140,8 +135,6 @@ public abstract class AbstractParser
     {
         Macro macro = getMacroManager().getMacro( macroId );
 
-        macro.enableLogging( getLog() );
-
         macro.execute( sink, request );
     }
 
@@ -228,29 +221,6 @@ public abstract class AbstractParser
         return secondParsing;
     }
 
-    /** {@inheritDoc} */
-    public void enableLogging( Log log )
-    {
-        this.logger = log;
-    }
-
-    /**
-     * Returns the current logger for this parser.
-     * If no logger has been configured yet, a new SystemStreamLog is returned.
-     *
-     * @return Log
-     * @since 1.1
-     */
-    protected Log getLog()
-    {
-        if ( logger == null )
-        {
-            logger = new SystemStreamLog();
-        }
-
-        return logger;
-    }
-
     /**
      * Gets the current {@link MacroManager}.
      *
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
index c0b1ddb..7a1b581 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
@@ -120,7 +120,7 @@ public abstract class AbstractXmlParser
                 throw new ParseException( "Error reading the model: " + e.getMessage(), e );
             }
 
-            new XmlValidator( getLog() ).validate( content );
+            new XmlValidator( ).validate( content );
 
             src = new StringReader( content );
         }
@@ -131,13 +131,11 @@ public abstract class AbstractXmlParser
             XmlPullParser parser = new MXParser();
 
             parser.setInput( src );
-            
+
             // allow parser initialization, e.g. for additional entities in XHTML
             // Note: do it after input is set, otherwise values are reset
             initXmlParser( parser );
 
-            sink.enableLogging( getLog() );
-
             parseXml( parser, sink );
         }
         catch ( XmlPullParserException ex )
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
index 6a2934b..0e1cd39 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
@@ -19,7 +19,6 @@ package org.apache.maven.doxia.parser;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.LogEnabled;
 import org.apache.maven.doxia.sink.Sink;
 
 import java.io.Reader;
@@ -33,7 +32,6 @@ import java.io.Reader;
  * @since 1.0
  */
 public interface Parser
-    extends LogEnabled
 {
     /** The Plexus lookup role. */
     String ROLE = Parser.class.getName();
@@ -57,7 +55,7 @@ public interface Parser
      */
     void parse( Reader source, Sink sink )
         throws ParseException;
-    
+
     /**
      * Parses the given source model and emits Doxia events into the given sink.
      *
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java
index dd10f58..cc8f579 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java
@@ -20,11 +20,7 @@ package org.apache.maven.doxia.parser;
  */
 
 import java.io.Reader;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
 import java.util.Stack;
-import java.util.TreeSet;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -34,9 +30,12 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.util.DoxiaUtils;
+
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Common base parser for xhtml5 events.
@@ -45,6 +44,8 @@ public class Xhtml5BaseParser
     extends AbstractXmlParser
         implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( Xhtml5BaseParser.class );
+
     /**
      * True if a &lt;script&gt;&lt;/script&gt; or &lt;style&gt;&lt;/style&gt; block is read. CDATA sections within are
      * handled as rawText.
@@ -75,10 +76,6 @@ public class Xhtml5BaseParser
     /** Used to wrap the definedTerm with its definition, even when one is omitted */
     boolean hasDefinitionListItem = false;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     /** {@inheritDoc} */
     @Override
     public void parse( Reader source, Sink sink, String reference )
@@ -92,8 +89,6 @@ public class Xhtml5BaseParser
         }
         finally
         {
-            logWarnings();
-
             setSecondParsing( false );
             init();
         }
@@ -730,14 +725,8 @@ public class Xhtml5BaseParser
     {
         if ( !baseStartTag( parser, sink ) )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().warn( "Unrecognized xml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
@@ -996,8 +985,7 @@ public class Xhtml5BaseParser
         {
             String linkAnchor = DoxiaUtils.encodeId( id, true );
 
-            String msg = "Modified invalid link: '" + id + "' to '" + linkAnchor + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid link '{}' to '{}'", id, linkAnchor );
 
             return linkAnchor;
         }
@@ -1017,7 +1005,6 @@ public class Xhtml5BaseParser
         this.orderedListDepth = 0;
         this.headingLevel = 0;
         this.inVerbatim = false;
-        this.warnMessages = null;
     }
 
     private void handleAEnd( Sink sink )
@@ -1049,8 +1036,7 @@ public class Xhtml5BaseParser
                 {
                     href = href.substring( 0, hashIndex ) + "#" + DoxiaUtils.encodeId( hash, true );
 
-                    String msg = "Modified invalid link: '" + hash + "' to '" + href + "'";
-                    logMessage( "modifiedLink", msg );
+                    LOGGER.debug( "Modified invalid link '{}' to '{}'", hash, href );
                 }
             }
             sink.link( href, attribs );
@@ -1254,55 +1240,4 @@ public class Xhtml5BaseParser
 
         sink.tableRows( justif, grid );
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String log = "[XHTML Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( log );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( log );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.1
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
index 411b045..1aa9bc2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
@@ -20,10 +20,6 @@ package org.apache.maven.doxia.parser;
  */
 
 import java.io.Reader;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -37,6 +33,8 @@ import org.apache.maven.doxia.util.DoxiaUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Common base parser for xhtml events.
@@ -49,6 +47,8 @@ public class XhtmlBaseParser
     extends AbstractXmlParser
         implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XhtmlBaseParser.class );
+
     /**
      * True if a &lt;script&gt;&lt;/script&gt; or &lt;style&gt;&lt;/style&gt; block is read. CDATA sections within are
      * handled as rawText.
@@ -76,10 +76,6 @@ public class XhtmlBaseParser
     /** Used to wrap the definedTerm with its definition, even when one is omitted */
     boolean hasDefinitionListItem = false;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     /** {@inheritDoc} */
     @Override
     public void parse( Reader source, Sink sink, String reference )
@@ -93,8 +89,6 @@ public class XhtmlBaseParser
         }
         finally
         {
-            logWarnings();
-
             setSecondParsing( false );
             init();
         }
@@ -740,14 +734,8 @@ public class XhtmlBaseParser
     {
         if ( !baseStartTag( parser, sink ) )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().warn( "Unrecognized xml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
@@ -1002,8 +990,7 @@ public class XhtmlBaseParser
         {
             String linkAnchor = DoxiaUtils.encodeId( id, true );
 
-            String msg = "Modified invalid link: '" + id + "' to '" + linkAnchor + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid link '{}' to '{}'", id, linkAnchor );
 
             return linkAnchor;
         }
@@ -1024,7 +1011,6 @@ public class XhtmlBaseParser
         this.sectionLevel = 0;
         this.inVerbatim = false;
         this.inFigure = false;
-        this.warnMessages = null;
     }
 
     private void handleAEnd( Sink sink )
@@ -1056,8 +1042,7 @@ public class XhtmlBaseParser
                 {
                     href = href.substring( 0, hashIndex ) + "#" + DoxiaUtils.encodeId( hash, true );
 
-                    String msg = "Modified invalid link: '" + hash + "' to '" + href + "'";
-                    logMessage( "modifiedLink", msg );
+                    LOGGER.debug( "Modified invalid link '{}' to '{}'", hash, href );
                 }
             }
             sink.link( href, attribs );
@@ -1253,55 +1238,4 @@ public class XhtmlBaseParser
 
         sink.tableRows( justif, grid );
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String log = "[XHTML Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( log );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( log );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.1
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java
index 4b0c137..e5495cf 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.sink.impl;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.Sink;
 
@@ -34,31 +32,7 @@ import org.apache.maven.doxia.sink.Sink;
 public abstract class AbstractSink
     implements Sink, Markup
 {
-    private Log logger;
-
-    /** {@inheritDoc} */
-    public void enableLogging( Log log )
-    {
-        this.logger = log;
-    }
-
     /**
-     * Returns a logger for this sink.
-     * If no logger has been configured, a new SystemStreamLog is returned.
-     *
-     * @return Log
-     */
-    protected Log getLog()
-    {
-        if ( logger == null )
-        {
-            logger = new SystemStreamLog();
-        }
-
-        return logger;
-    }
-
-     /**
       * Parses the given String and replaces all occurrences of
       * '\n', '\r' and '\r\n' with the system EOL. All Sinks should
       * make sure that text output is filtered through this method.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
index a74bf1e..85665b2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
@@ -27,7 +27,6 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.SinkFactory;
@@ -1343,11 +1342,4 @@ public class RandomAccessSink
     {
         currentSink.verbatim_();
     }
-
-    /** {@inheritDoc} */
-    @Override
-    public void enableLogging( Log log )
-    {
-        currentSink.enableLogging( log );
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
index 45d726f..dbf2884 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
@@ -29,9 +29,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Stack;
-import java.util.TreeSet;
 
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.html.HTML.Attribute;
@@ -46,6 +44,8 @@ import org.apache.maven.doxia.util.HtmlTools;
 
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Abstract base xhtml5 sink implementation.
@@ -54,6 +54,8 @@ public class Xhtml5BaseSink
     extends AbstractXmlSink
     implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( Xhtml5BaseSink.class );
+
     // ----------------------------------------------------------------------
     // Instance fields
     // ----------------------------------------------------------------------
@@ -119,10 +121,6 @@ public class Xhtml5BaseSink
      * */
     protected boolean tableRows = false;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     // ----------------------------------------------------------------------
     // Constructor
     // ----------------------------------------------------------------------
@@ -276,7 +274,6 @@ public class Xhtml5BaseSink
         this.evenTableRow = true;
         this.tableAttributes = null;
         this.tableRows = false;
-        this.warnMessages = null;
     }
 
     /**
@@ -1455,10 +1452,7 @@ public class Xhtml5BaseSink
 
         if ( this.tableContentWriterStack.isEmpty() )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                getLog().warn( "No table content." );
-            }
+            LOGGER.warn( "No table content" );
             return;
         }
 
@@ -1809,8 +1803,7 @@ public class Xhtml5BaseSink
         {
             id = DoxiaUtils.encodeId( name, true );
 
-            String msg = "Modified invalid anchor name: '" + name + "' to '" + id + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid anchor name '{}' to '{}'", name, id );
         }
 
         MutableAttributeSet att = new SinkEventAttributeSet();
@@ -2184,8 +2177,7 @@ public class Xhtml5BaseSink
 
             if ( !originalComment.equals( comment ) )
             {
-                getLog().warn( "[Xhtml5 Sink] Modified invalid comment '" + originalComment
-                        + "' to '" + comment + "'" );
+                LOGGER.warn( "Modified invalid comment '{}' to '{}'", originalComment, comment );
             }
 
             final StringBuilder buffer = new StringBuilder( comment.length() + 7 );
@@ -2244,8 +2236,7 @@ public class Xhtml5BaseSink
     {
         if ( requiredParams == null || !( requiredParams[0] instanceof Integer ) )
         {
-            String msg = "No type information for unknown event: '" + name + "', ignoring!";
-            logMessage( "noTypeInfo", msg );
+            LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
 
             return;
         }
@@ -2270,8 +2261,7 @@ public class Xhtml5BaseSink
 
         if ( tag == null )
         {
-            String msg = "No HTML tag found for unknown event: '" + name + "', ignoring!";
-            logMessage( "noHtmlTag", msg );
+            LOGGER.warn( "No HTML tag found for unknown event '{}', ignoring!", name );
         }
         else
         {
@@ -2289,8 +2279,7 @@ public class Xhtml5BaseSink
             }
             else
             {
-                String msg = "No type information for unknown event: '" + name + "', ignoring!";
-                logMessage( "noTypeInfo", msg );
+                LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
             }
         }
     }
@@ -2324,19 +2313,6 @@ public class Xhtml5BaseSink
     {
         writer.close();
 
-        if ( getLog().isWarnEnabled() && this.warnMessages != null )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-
         init();
     }
 
@@ -2453,36 +2429,4 @@ public class Xhtml5BaseSink
             this.tableCaptionXMLWriterStack.getLast().endElement();
         }
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #close()
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String mesg = "[XHTML5 Sink] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( mesg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( mesg );
-        warnMessages.put( key, set );
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
index 10d08ec..2dd6cb2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.Stack;
-import java.util.TreeSet;
 
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.html.HTML.Attribute;
@@ -45,6 +44,8 @@ import org.apache.maven.doxia.util.HtmlTools;
 
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Abstract base xhtml sink implementation.
@@ -57,6 +58,8 @@ public class XhtmlBaseSink
     extends AbstractXmlSink
     implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XhtmlBaseSink.class );
+
     // ----------------------------------------------------------------------
     // Instance fields
     // ----------------------------------------------------------------------
@@ -131,10 +134,6 @@ public class XhtmlBaseSink
     /** Keep track of the closing tags for inline events. */
     protected Stack<List<Tag>> inlineStack = new Stack<>();
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     // ----------------------------------------------------------------------
     // Constructor
     // ----------------------------------------------------------------------
@@ -291,7 +290,6 @@ public class XhtmlBaseSink
         this.legacyFigureCaption = false;
         this.inFigure = false;
         this.tableRows = false;
-        this.warnMessages = null;
     }
 
     /**
@@ -1332,10 +1330,7 @@ public class XhtmlBaseSink
 
         if ( this.tableContentWriterStack.isEmpty() )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                getLog().warn( "No table content." );
-            }
+            LOGGER.warn( "No table content" );
             return;
         }
 
@@ -1686,8 +1681,7 @@ public class XhtmlBaseSink
         {
             id = DoxiaUtils.encodeId( name, true );
 
-            String msg = "Modified invalid anchor name: '" + name + "' to '" + id + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid anchor name '{}' to '{}'", name, id );
         }
 
         MutableAttributeSet att = new SinkEventAttributeSet();
@@ -2035,7 +2029,7 @@ public class XhtmlBaseSink
 
             if ( !originalComment.equals( comment ) )
             {
-                getLog().warn( "[Xhtml Sink] Modified invalid comment '" + originalComment + "' to '" + comment + "'" );
+                LOGGER.warn( "Modified invalid comment '{}' to '{}'", originalComment, comment );
             }
 
             final StringBuilder buffer = new StringBuilder( comment.length() + 7 );
@@ -2094,8 +2088,7 @@ public class XhtmlBaseSink
     {
         if ( requiredParams == null || !( requiredParams[0] instanceof Integer ) )
         {
-            String msg = "No type information for unknown event: '" + name + "', ignoring!";
-            logMessage( "noTypeInfo", msg );
+            LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
 
             return;
         }
@@ -2120,8 +2113,7 @@ public class XhtmlBaseSink
 
         if ( tag == null )
         {
-            String msg = "No HTML tag found for unknown event: '" + name + "', ignoring!";
-            logMessage( "noHtmlTag", msg );
+            LOGGER.warn( "No HTML tag found for unknown event '{}', ignoring!", name );
         }
         else
         {
@@ -2139,8 +2131,7 @@ public class XhtmlBaseSink
             }
             else
             {
-                String msg = "No type information for unknown event: '" + name + "', ignoring!";
-                logMessage( "noTypeInfo", msg );
+                LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
             }
         }
     }
@@ -2174,19 +2165,6 @@ public class XhtmlBaseSink
     {
         writer.close();
 
-        if ( getLog().isWarnEnabled() && this.warnMessages != null )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-
         init();
     }
 
@@ -2303,36 +2281,4 @@ public class XhtmlBaseSink
             this.tableCaptionXMLWriterStack.getLast().endElement();
         }
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #close()
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String mesg = "[XHTML Sink] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( mesg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( mesg );
-        warnMessages.put( key, set );
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
index b2c3986..f57264f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
@@ -27,11 +27,11 @@ import java.util.regex.Pattern;
 
 import javax.xml.XMLConstants;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.markup.XmlMarkup;
 import org.apache.maven.doxia.parser.AbstractXmlParser.CachedFileEntityResolver;
 import org.apache.maven.doxia.parser.ParseException;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -46,6 +46,8 @@ import org.xml.sax.helpers.XMLReaderFactory;
  */
 public class XmlValidator
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XmlValidator.class );
+
     /**
      * Doctype pattern i.e. ".*<!DOCTYPE([^>]*)>.*"
      * see <a href="http://www.w3.org/TR/REC-xml/#NT-doctypedecl">http://www.w3.org/TR/REC-xml/#NT-doctypedecl</a>.
@@ -58,18 +60,6 @@ public class XmlValidator
     /** lazy xmlReader to validate xml content*/
     private XMLReader xmlReader;
 
-    private Log logger;
-
-    /**
-     * Constructor.
-     *
-     * @param log a logger, not null.
-     */
-    public XmlValidator( Log log )
-    {
-        this.logger = log;
-    }
-
     /**
      * Validate an XML content with SAX.
      *
@@ -103,7 +93,6 @@ public class XmlValidator
             }
 
             // 3 validate content
-            getLog().debug( "Validating the content..." );
             getXmlReader( hasXsd && hasDoctype ).parse( new InputSource( new StringReader( content ) ) );
         }
         catch ( IOException | SAXException e )
@@ -122,7 +111,7 @@ public class XmlValidator
     {
         if ( xmlReader == null )
         {
-            MessagesErrorHandler errorHandler = new MessagesErrorHandler( getLog() );
+            MessagesErrorHandler errorHandler = new MessagesErrorHandler( );
 
             xmlReader = XMLReaderFactory.createXMLReader();
             xmlReader.setFeature( "http://xml.org/sax/features/validation", true );
@@ -136,11 +125,6 @@ public class XmlValidator
         return xmlReader;
     }
 
-    private Log getLog()
-    {
-        return logger;
-    }
-
     /**
      * Convenience class to beautify <code>SAXParseException</code> messages.
      */
@@ -161,13 +145,10 @@ public class XmlValidator
         private static final Pattern ELEMENT_TYPE_PATTERN =
             Pattern.compile( "Element type \".*\" must be declared.", Pattern.DOTALL );
 
-        private final Log log;
-
         private boolean hasDtdAndXsd;
 
-        private MessagesErrorHandler( Log log )
+        private MessagesErrorHandler( )
         {
-            this.log = log;
         }
 
         /**
@@ -252,7 +233,7 @@ public class XmlValidator
             switch ( type )
             {
                 case TYPE_WARNING:
-                    log.warn( logMessage );
+                    LOGGER.warn( logMessage );
                     break;
 
                 case TYPE_UNKNOWN:
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
index 12b2594..2082704 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
@@ -68,16 +68,4 @@ public class EchoMacroTest
         assertEquals( "verbatim_", event.getName() );
         assertFalse( it.hasNext() );
     }
-
-    /**
-     * Test log.
-     */
-    @Test
-    public void testLog()
-    {
-        EchoMacro macro = new EchoMacro();
-        macro.enableLogging( null );
-        assertNotNull( macro.getLog() );
-        assertNotNull( macro.getLog() );
-    }
 }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
index 9b4d868..a3713d6 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
@@ -26,7 +26,6 @@ import java.io.Writer;
 
 import org.apache.maven.doxia.AbstractModuleTest;
 
-import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 
@@ -105,7 +104,6 @@ public abstract class AbstractIdentityTest
         writer = new StringWriter();
         sink = new TextSink( writer );
         Parser parser = createParser();
-        parser.enableLogging( new PlexusLoggerWrapper( ( ( DefaultPlexusContainer )getContainer() ).getLogger() ) );
         parser.parse( reader, sink );
         String actual = writer.toString();
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
index 3d58d7a..950c627 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
@@ -21,7 +21,6 @@ package org.apache.maven.doxia.parser;
 
 import java.util.Iterator;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
@@ -42,7 +41,6 @@ public class Xhtml5BaseParserTest
     protected Parser createParser()
     {
         parser = new Xhtml5BaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         return parser;
     }
 
@@ -58,7 +56,6 @@ public class Xhtml5BaseParserTest
         super.setUp();
 
         parser = new Xhtml5BaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         sink.reset();
     }
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
index 58342db..1175974 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
@@ -21,7 +21,6 @@ package org.apache.maven.doxia.parser;
 
 import java.util.Iterator;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
@@ -45,7 +44,6 @@ public class XhtmlBaseParserTest
     protected Parser createParser()
     {
         parser = new XhtmlBaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         return parser;
     }
 
@@ -61,7 +59,6 @@ public class XhtmlBaseParserTest
         super.setUp();
 
         parser = new XhtmlBaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         sink.reset();
     }
 
@@ -736,7 +733,7 @@ public class XhtmlBaseParserTest
         // ampersand should be un-escaped
         assertEquals( "http://ex.com/ex.jpg?v=l&l=e", attribs.getAttribute( "src" ) );
     }
-    
+
     public void testUnbalancedDefinitionListItem() throws Exception
     {
         String text = "<body><dl><dt>key</dt><dd>value</dd></dl>" +
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
index 4247059..ff6d4dc 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
@@ -24,10 +24,8 @@ import java.io.IOException;
 import java.io.Writer;
 
 import org.apache.maven.doxia.AbstractModuleTest;
-import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
-import org.codehaus.plexus.DefaultPlexusContainer;
 import org.codehaus.plexus.util.IOUtil;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -57,7 +55,6 @@ public abstract class AbstractSinkTest
 
         testWriter.reset();
         sink = createSink( testWriter );
-        sink.enableLogging( new PlexusLoggerWrapper( ( ( DefaultPlexusContainer )getContainer() ).getLogger() ) );
     }
 
     /**
@@ -1085,7 +1082,6 @@ public abstract class AbstractSinkTest
 
         testWriter.reset();
         sink = createSink( testWriter );
-        sink.enableLogging( new PlexusLoggerWrapper( ( ( DefaultPlexusContainer )getContainer() ).getLogger() ) );
 
         comment = "-";
         sink.comment( comment );
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
index 7ec5b61..620bdca 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
@@ -25,6 +25,8 @@ import java.io.Writer;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.AbstractSink;
 import org.apache.maven.doxia.sink.impl.SinkUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A simple text-based implementation of the <code>Sink</code> interface.
@@ -33,6 +35,7 @@ import org.apache.maven.doxia.sink.impl.SinkUtils;
 public class TextSink
     extends AbstractSink
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( TextSink.class );
 
     /** For writing the result. */
     private final Writer out;
@@ -757,7 +760,7 @@ public class TextSink
         }
         catch ( IOException e )
         {
-            getLog().warn( "Could not flush sink: " + e.getMessage(), e );
+            LOGGER.warn( "Could not flush sink", e );
         }
     }
 
@@ -770,7 +773,7 @@ public class TextSink
         }
         catch ( IOException e )
         {
-            getLog().warn( "Could not close sink: " + e.getMessage(), e );
+            LOGGER.warn( "Could not close sink", e );
         }
     }
 
@@ -1071,7 +1074,7 @@ public class TextSink
         }
         catch ( IOException e )
         {
-            getLog().warn( "Could not write to sink: " + e.getMessage(), e );
+            LOGGER.warn( "Could not write to sink", e );
         }
     }
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
index 40a93d6..4c1f700 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.util;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.XmlStreamReader;
@@ -38,8 +36,7 @@ extends PlexusTestCase
     {
         String xml = IOUtil.toString( new XmlStreamReader( this.getClass().getResourceAsStream( "/test.xhtml" ) ) );
 
-        Log log = new SystemStreamLog();
-        XmlValidator validator = new XmlValidator( log );
+        XmlValidator validator = new XmlValidator( );
 
         validator.validate( xml );
     }
diff --git a/doxia-logging-api/pom.xml b/doxia-logging-api/pom.xml
deleted file mode 100644
index f680672..0000000
--- a/doxia-logging-api/pom.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <artifactId>doxia</artifactId>
-    <groupId>org.apache.maven.doxia</groupId>
-    <version>2.0.0-M1-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>doxia-logging-api</artifactId>
-  <name>Doxia :: Logging API</name>
-  <description>Doxia Logging API.</description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-container-default</artifactId>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/Log.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/Log.java
deleted file mode 100644
index 8b5ad28..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/Log.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package org.apache.maven.doxia.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.
- */
-
-/**
- * This interface supplies the API for providing feedback to the user from
- * a Parser or Sink, using standard <code>Doxia</code> channels.
- * <br>
- * There should be no big surprises here, although you may notice that the methods accept
- * <code>java.lang.CharSequence</code> rather than <code>java.lang.String</code>. This is provided mainly as a
- * convenience, to enable developers to pass things like <code>java.lang.StringBuilder</code> directly into the logger,
- * rather than formatting first by calling <code>toString()</code>.
- * <br>
- * Based on <code>org.apache.maven.plugin.logging.Log</code>.
- *
- * @author jdcasey
- * @author ltheussl
- * @since 1.1
- */
-@Deprecated
-public interface Log
-{
-    /** Typecode for debugging messages. */
-    int LEVEL_DEBUG = 0;
-
-    /** Typecode for informational messages. */
-    int LEVEL_INFO = 1;
-
-    /** Typecode for warning messages. */
-    int LEVEL_WARN = 2;
-
-    /** Typecode for error messages. */
-    int LEVEL_ERROR = 3;
-
-    /** Typecode for fatal error messages. */
-    int LEVEL_FATAL = 4;
-
-    /** Typecode for disabled log levels. */
-    int LEVEL_DISABLED = 5;
-
-    /**
-     * Set the current log level.
-     *
-     * @param level the log level to set.
-     */
-    void setLogLevel( int level );
-
-    /**
-     * <p>isDebugEnabled.</p>
-     *
-     * @return true if the <b>debug</b> error level is enabled.
-     */
-    boolean isDebugEnabled();
-
-    /**
-     * Send a message to the user in the <b>debug</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void debug( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>debug</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void debug( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>debug</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void debug( Throwable error );
-
-    /**
-     * <p>isInfoEnabled.</p>
-     *
-     * @return true if the <b>info</b> error level is enabled.
-     */
-    boolean isInfoEnabled();
-
-    /**
-     * Send a message to the user in the <b>info</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void info( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>info</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void info( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>info</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void info( Throwable error );
-
-    /**
-     * <p>isWarnEnabled.</p>
-     *
-     * @return true if the <b>warn</b> error level is enabled.
-     */
-    boolean isWarnEnabled();
-
-    /**
-     * Send a message to the user in the <b>warn</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void warn( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>warn</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void warn( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>warn</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void warn( Throwable error );
-
-    /**
-     * <p>isErrorEnabled.</p>
-     *
-     * @return true if the <b>error</b> error level is enabled.
-     */
-    boolean isErrorEnabled();
-
-    /**
-     * Send a message to the user in the <b>error</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void error( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>error</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void error( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>error</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void error( Throwable error );
-}
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/LogEnabled.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/LogEnabled.java
deleted file mode 100644
index 6bc9922..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/LogEnabled.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.apache.maven.doxia.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.
- */
-
-
-/**
- * An interface for <code>Doxia</code> components (mainly Sink, Parser and Macro) that need the ability to log.
- * <br>
- * Based on <code>org.codehaus.plexus.logging.LogEnabled</code>.
- *
- * @author ltheussl
- * @since 1.1
- */
-@Deprecated
-public interface LogEnabled
-{
-    /**
-     * Enable a <code>Doxia</code> logger for this <code>Doxia</code> component.
-     *
-     * @param log a Log.
-     */
-    void enableLogging( Log log );
-}
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/PlexusLoggerWrapper.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/PlexusLoggerWrapper.java
deleted file mode 100644
index 3c7fe45..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/PlexusLoggerWrapper.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package org.apache.maven.doxia.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 org.codehaus.plexus.logging.Logger;
-
-/**
- * Wrap a Plexus logger into a Doxia logger.
- * Based on org.apache.maven.plugin.logging.Log.
- *
- * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
- * @since 1.1
- */
-@Deprecated
-public class PlexusLoggerWrapper
-    implements Log
-{
-    private final Logger logger;
-
-    /**
-     * <p>Constructor for PlexusLoggerWrapper.</p>
-     *
-     * @param logger the Plexus logger to wrap.
-     */
-    public PlexusLoggerWrapper( Logger logger )
-    {
-        this.logger = logger;
-    }
-
-    /** {@inheritDoc} */
-    public void setLogLevel( int level )
-    {
-        if ( level <= LEVEL_DEBUG )
-        {
-            logger.setThreshold( Logger.LEVEL_DEBUG );
-        }
-        else if ( level <= LEVEL_INFO )
-        {
-            logger.setThreshold( Logger.LEVEL_INFO );
-        }
-        else if ( level <= LEVEL_WARN )
-        {
-            logger.setThreshold( Logger.LEVEL_WARN );
-        }
-        else if ( level <= LEVEL_ERROR )
-        {
-            logger.setThreshold( Logger.LEVEL_ERROR );
-        }
-        else
-        {
-            logger.setThreshold( Logger.LEVEL_DISABLED );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void debug( CharSequence content )
-    {
-        logger.debug( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( CharSequence content, Throwable error )
-    {
-        logger.debug( toString( content ), error );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( Throwable error )
-    {
-        logger.debug( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content )
-    {
-        logger.info( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content, Throwable error )
-    {
-        logger.info( toString( content ), error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void info( Throwable error )
-    {
-        logger.info( "", error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void warn( CharSequence content )
-    {
-        logger.warn( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( CharSequence content, Throwable error )
-    {
-        logger.warn( toString( content ), error );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( Throwable error )
-    {
-        logger.warn( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content )
-    {
-        logger.error( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content, Throwable error )
-    {
-        logger.error( toString( content ), error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void error( Throwable error )
-    {
-        logger.error( "", error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isDebugEnabled()
-    {
-        return logger.isDebugEnabled();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isInfoEnabled()
-    {
-        return logger.isInfoEnabled();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isWarnEnabled()
-    {
-        return logger.isWarnEnabled();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isErrorEnabled()
-    {
-        return logger.isErrorEnabled();
-    }
-
-    // ----------------------------------------------------------------------
-    // Private methods
-    // ----------------------------------------------------------------------
-
-    private String toString( CharSequence content )
-    {
-        if ( content == null )
-        {
-            return "";
-        }
-
-        return content.toString();
-    }
-}
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/SystemStreamLog.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/SystemStreamLog.java
deleted file mode 100644
index 8ec510a..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/SystemStreamLog.java
+++ /dev/null
@@ -1,271 +0,0 @@
-package org.apache.maven.doxia.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.PrintWriter;
-import java.io.StringWriter;
-
-/**
- * Logger with "standard" output and error output stream. The log prefix is voluntarily in lower case.
- * <br>
- * Based on <code>org.apache.maven.plugin.logging.SystemStreamLog</code>.
- *
- * @author jdcasey
- * @author ltheussl
- * @since 1.1
- */
-@Deprecated
-public class SystemStreamLog
-    implements Log
-{
-    private static final String EOL = System.getProperty( "line.separator" );
-
-    private int currentLevel = LEVEL_INFO;
-
-    /** {@inheritDoc} */
-    public void setLogLevel( int level )
-    {
-        if ( level <= LEVEL_DEBUG )
-        {
-            currentLevel = LEVEL_DEBUG;
-        }
-        else if ( level <= LEVEL_INFO )
-        {
-            currentLevel = LEVEL_INFO;
-        }
-        else if ( level <= LEVEL_WARN )
-        {
-            currentLevel = LEVEL_WARN;
-        }
-        else if ( level <= LEVEL_ERROR )
-        {
-            currentLevel = LEVEL_ERROR;
-        }
-        else
-        {
-            currentLevel = LEVEL_DISABLED;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void debug( CharSequence content )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "debug", content );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void debug( CharSequence content, Throwable error )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "debug", content, error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void debug( Throwable error )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "debug", error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "info", content );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content, Throwable error )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "info", content, error );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void info( Throwable error )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "info", error );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void warn( CharSequence content )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "warn", content );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void warn( CharSequence content, Throwable error )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "warn", content, error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void warn( Throwable error )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "warn", error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content )
-    {
-        if ( isErrorEnabled() )
-        {
-            System.err.println( "[error] " + content.toString() );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content, Throwable error )
-    {
-        if ( isErrorEnabled() )
-        {
-            StringWriter sWriter = new StringWriter();
-            PrintWriter pWriter = new PrintWriter( sWriter );
-
-            error.printStackTrace( pWriter );
-
-            System.err.println( "[error] " + content.toString()
-                + EOL + EOL + sWriter.toString() );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void error( Throwable error )
-    {
-        if ( isErrorEnabled() )
-        {
-            StringWriter sWriter = new StringWriter();
-            PrintWriter pWriter = new PrintWriter( sWriter );
-
-            error.printStackTrace( pWriter );
-
-            System.err.println( "[error] " + sWriter.toString() );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isDebugEnabled()
-    {
-        return ( currentLevel <= LEVEL_DEBUG );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isInfoEnabled()
-    {
-        return ( currentLevel <= LEVEL_INFO );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isWarnEnabled()
-    {
-        return ( currentLevel <= LEVEL_WARN );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isErrorEnabled()
-    {
-        return ( currentLevel <= LEVEL_ERROR );
-    }
-
-      //
-     // private
-    //
-
-    private void print( String prefix, CharSequence content )
-    {
-        System.out.println( "[" + prefix + "] " + content.toString() );
-    }
-
-    private void print( String prefix, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        System.out.println( "[" + prefix + "] " + sWriter.toString() );
-    }
-
-    private void print( String prefix, CharSequence content, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        System.out.println( "[" + prefix + "] " + content.toString()
-            + EOL + EOL + sWriter.toString() );
-    }
-}
diff --git a/doxia-logging-api/src/site/apt/index.apt b/doxia-logging-api/src/site/apt/index.apt
deleted file mode 100644
index fd75b48..0000000
--- a/doxia-logging-api/src/site/apt/index.apt
+++ /dev/null
@@ -1,27 +0,0 @@
- --------------
- Maven Doxia Logging API
- --------------
-
- ~~ 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.
-
- ~~ NOTE: For help with the syntax of this file, see:
- ~~ http://maven.apache.org/doxia/references/apt-format.html
-
-Deprecation Notice
-
-  This Doxia module is deprecated and will be removed in version 2.0.0.
diff --git a/doxia-logging-api/src/site/site.xml b/doxia-logging-api/src/site/site.xml
deleted file mode 100644
index ac3868c..0000000
--- a/doxia-logging-api/src/site/site.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-/*
- * 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.
- */
- -->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.1.0 https://maven.apache.org/xsd/decoration-1.1.0.xsd">
-
-  <body>
-
-    <menu ref="parent"/>
-
-    <menu name="Overview">
-      <item name="Introduction" href="index.html"/>
-      <item name="JavaDocs" href="apidocs/index.html"/>
-      <item name="Source Xref" href="xref/index.html"/>
-      <!--item name="FAQ" href="faq.html"/-->
-    </menu>
-
-    <menu ref="reports"/>
-
-  </body>
-
-</project>
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-apt/pom.xml b/doxia-modules/doxia-module-apt/pom.xml
index 67b767c..15e2463 100644
--- a/doxia-modules/doxia-module-apt/pom.xml
+++ b/doxia-modules/doxia-module-apt/pom.xml
@@ -43,6 +43,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -56,5 +60,10 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
index bccaddf..f36b8cd 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
@@ -34,6 +34,8 @@ import org.apache.maven.doxia.util.DoxiaUtils;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.io.Reader;
@@ -41,9 +43,7 @@ import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Set;
 import java.util.StringTokenizer;
-import java.util.TreeSet;
 
 /**
  * The APT parser.
@@ -57,6 +57,8 @@ public class AptParser
     extends AbstractTextParser
     implements AptMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AptParser.class );
+
     /** Title event id */
     private static final int TITLE = 0;
 
@@ -163,10 +165,6 @@ public class AptParser
     /** a line of AptSource. */
     protected String line;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    protected Map<String, Set<String>> warnMessages;
-
     private static final int NUMBER_OF_SPACES = 85;
 
     static
@@ -190,7 +188,7 @@ public class AptParser
     {
         parse( source, sink, "" );
     }
-    
+
     /** {@inheritDoc} */
     @Override
     public void parse( Reader source, Sink sink, String reference )
@@ -214,7 +212,6 @@ public class AptParser
             this.source = new AptReaderSource( new StringReader( sourceContent ), reference );
 
             this.sink = sink;
-            sink.enableLogging( getLog() );
 
             blockFileName = null;
 
@@ -244,8 +241,6 @@ public class AptParser
         }
         finally
         {
-            logWarnings();
-
             setSecondParsing( false );
             init();
         }
@@ -361,10 +356,7 @@ public class AptParser
                                     }
                                     catch ( NumberFormatException e )
                                     {
-                                        if ( getLog().isDebugEnabled() )
-                                        {
-                                            getLog().debug( "Not a number: " + text.substring( i + 2, i + 4 ) );
-                                        }
+                                        LOGGER.debug( "Not a number: {}", text.substring( i + 2, i + 4 ) );
                                     }
 
                                     i += 3;
@@ -387,10 +379,7 @@ public class AptParser
                                     }
                                     catch ( NumberFormatException e )
                                     {
-                                        if ( getLog().isDebugEnabled() )
-                                        {
-                                            getLog().debug( "Not a number: " + text.substring( i + 2, i + 6 ) );
-                                        }
+                                        LOGGER.debug( "Not a number: {}", text.substring( i + 2, i + 6 ) );
                                     }
 
                                     i += 5;
@@ -420,12 +409,7 @@ public class AptParser
                                     }
                                     catch ( NumberFormatException e )
                                     {
-                                        if ( getLog().isDebugEnabled() )
-                                        {
-                                            getLog().debug(
-                                                            "Not a number: "
-                                                                + text.substring( i + 1, i + 1 + octalChars ) );
-                                        }
+                                        LOGGER.debug( "Not a number: {}", text.substring( i + 1, i + 1 + octalChars ) );
                                     }
 
                                     i += octalChars;
@@ -480,9 +464,8 @@ public class AptParser
 
                                 if ( hash.endsWith( ".html" ) && !hash.startsWith( "./" ) )
                                 {
-                                    String msg = "Ambiguous link: '" + hash
-                                            + "'. If this is a local link, prepend \"./\"!";
-                                    logMessage( "ambiguousLink", msg );
+                                    LOGGER.debug( "Ambiguous link '{}'. If this is a local link, prepend \"./\"!",
+                                            hash );
                                 }
 
                                 // link##anchor means literal
@@ -496,8 +479,7 @@ public class AptParser
                                         linkAnchor.substring( 0, hashIndex ) + "#"
                                             + DoxiaUtils.encodeId( hash, true );
 
-                                    String msg = "Modified invalid link: '" + hash + "' to '" + linkAnchor + "'";
-                                    logMessage( "modifiedLink", msg );
+                                    LOGGER.debug( "Modified invalid link '{}' to '{}'", hash, linkAnchor );
                                 }
                             }
 
@@ -729,7 +711,6 @@ public class AptParser
         this.blockFileName = null;
         this.blockLineNumber = 0;
         this.line = null;
-        this.warnMessages = null;
     }
 
     // ----------------------------------------------------------------------
@@ -1605,56 +1586,7 @@ public class AptParser
         return buffer.toString().trim();
     }
 
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        msg = "[APT Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( msg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( msg );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.2
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
 
-            this.warnMessages = null;
-        }
-    }
 
     // -----------------------------------------------------------------------
 
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
index a00754e..c44281e 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
@@ -29,6 +29,8 @@ import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.AbstractTextSink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * APT generator implementation.
@@ -42,6 +44,8 @@ public class AptSink
     extends AbstractTextSink
     implements AptMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AptSink.class );
+
     // ----------------------------------------------------------------------
     // Instance fields
     // ----------------------------------------------------------------------
@@ -1100,7 +1104,7 @@ public class AptSink
      */
     public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes )
     {
-        getLog().warn( "[Apt Sink] Unknown Sink event: '" + name + "', ignoring!" );
+        LOGGER.warn( "Unknown Sink event '{}', ignoring!", name );
     }
 
     /**
diff --git a/doxia-modules/doxia-module-fml/pom.xml b/doxia-modules/doxia-module-fml/pom.xml
index 4a3042a..3cca1c1 100644
--- a/doxia-modules/doxia-module-fml/pom.xml
+++ b/doxia-modules/doxia-module-fml/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -49,6 +53,11 @@ under the License.
       <artifactId>doxia-test-docs</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java
index 2cf0451..2912298 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java
@@ -25,6 +25,8 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse Fml questions and answers, these may contain arbitrary xdoc elements.
@@ -36,6 +38,8 @@ public class FmlContentParser
     extends Xhtml5BaseParser
     implements FmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( FmlContentParser.class );
+
     /** Empty elements don't write a closing tag. */
     private boolean isEmptyElement;
 
@@ -69,14 +73,8 @@ public class FmlContentParser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized fml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized fml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
index da334a1..3068d96 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
@@ -26,8 +26,6 @@ import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -50,6 +48,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse a fml model and emit events into the specified doxia Sink.
@@ -63,6 +63,8 @@ public class FmlParser
     extends AbstractXmlParser
     implements FmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( FmlParser.class );
+
     /** Collect a faqs model. */
     private Faqs faqs;
 
@@ -75,10 +77,6 @@ public class FmlParser
     /** Used to collect text events. */
     private StringBuilder buffer;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     /** The source content of the input reader. Used to pass into macros. */
     private String sourceContent;
 
@@ -124,8 +122,6 @@ public class FmlParser
         }
         finally
         {
-            logWarnings();
-
             this.faqs = null;
             this.sourceContent = null;
             setSecondParsing( false );
@@ -175,8 +171,7 @@ public class FmlParser
             {
                 String linkAnchor = DoxiaUtils.encodeId( currentPart.getId(), true );
 
-                String msg = "Modified invalid link: '" + currentPart.getId() + "' to '" + linkAnchor + "'";
-                logMessage( "modifiedLink", msg );
+                LOGGER.debug( "Modified invalid link '{}' to '{}'", currentPart.getId(), linkAnchor );
 
                 currentPart.setId( linkAnchor );
             }
@@ -201,8 +196,7 @@ public class FmlParser
             {
                 String linkAnchor = DoxiaUtils.encodeId( currentFaq.getId(), true );
 
-                String msg = "Modified invalid link: '" + currentFaq.getId() + "' to '" + linkAnchor + "'";
-                logMessage( "modifiedLink", msg );
+                LOGGER.debug( "Modified invalid link '{}' to '{}'", currentFaq.getId(), linkAnchor );
 
                 currentFaq.setId( linkAnchor );
             }
@@ -434,7 +428,6 @@ public class FmlParser
         this.currentFaq = null;
         this.currentPart = null;
         this.buffer = null;
-        this.warnMessages = null;
         this.macroName = null;
         this.macroParameters = null;
     }
@@ -546,7 +539,6 @@ public class FmlParser
         throws ParseException
     {
         FmlContentParser xdocParser = new FmlContentParser();
-        xdocParser.enableLogging( getLog() );
 
         sink.head();
         sink.title();
@@ -688,55 +680,4 @@ public class FmlParser
         sink.link_();
         sink.paragraph_();
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        msg = "[FML Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( msg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( msg );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.1
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-    }
 }
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
index 4a21323..24b2f20 100644
--- a/doxia-modules/doxia-module-markdown/pom.xml
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -76,6 +76,11 @@ under the License.
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
 
@@ -135,6 +140,7 @@ under the License.
             <goal>site</goal>
           </goals>
         </configuration>
+        <!-- Disabling IT for now since we need a Doxia 2.0.0 compatible Site Plugin
         <executions>
           <execution>
             <id>integration-test</id>
@@ -144,6 +150,7 @@ under the License.
             </goals>
           </execution>
         </executions>
+         -->
       </plugin>
 
     </plugins>
diff --git a/doxia-modules/doxia-module-xdoc/pom.xml b/doxia-modules/doxia-module-xdoc/pom.xml
index 34b5a28..5f922d6 100644
--- a/doxia-modules/doxia-module-xdoc/pom.xml
+++ b/doxia-modules/doxia-module-xdoc/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -59,6 +63,11 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
index e1b8184..7eb2918 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
@@ -42,6 +42,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse an xdoc model and emit events into the specified doxia Sink.
@@ -54,6 +56,8 @@ public class XdocParser
     extends XhtmlBaseParser
     implements XdocMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XdocParser.class );
+
     /**
      * The source content of the input reader. Used to pass into macros.
      */
@@ -144,7 +148,7 @@ public class XdocParser
         {
             if ( hasTitle )
             {
-                getLog().warn( "<title> was already defined in <properties>, ignored <title> in <head>." );
+                LOGGER.warn( "<title> was already defined in <properties>, ignored <title> in <head>." );
 
                 try
                 {
@@ -231,13 +235,8 @@ public class XdocParser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":" + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized xdoc tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xdoc tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
index 5243c31..674ee30 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
@@ -71,10 +71,6 @@ public class XmlWriterXdocSink
         super.close();
 
         String xdocContent = xdocWriter.toString();
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( "Xdoc content: " + xdocContent );
-        }
         StringWriter formattedContent = new StringWriter();
         try
         {
@@ -82,10 +78,6 @@ public class XmlWriterXdocSink
         }
         catch ( IOException e )
         {
-            if ( getLog().isDebugEnabled() )
-            {
-                getLog().error( "IOException: " + e.getMessage(), e );
-            }
             formattedContent = new StringWriter();
             formattedContent.write( xdocContent );
         }
diff --git a/doxia-modules/doxia-module-xhtml/pom.xml b/doxia-modules/doxia-module-xhtml/pom.xml
index 1eaf5b8..d60be28 100644
--- a/doxia-modules/doxia-module-xhtml/pom.xml
+++ b/doxia-modules/doxia-module-xhtml/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -52,5 +56,10 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
index fbeeb9a..d337a26 100644
--- a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
+++ b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
@@ -40,6 +40,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse an xhtml model and emit events into a Doxia Sink.
@@ -52,6 +54,8 @@ public class XhtmlParser
     extends XhtmlBaseParser
     implements XhtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XhtmlParser.class );
+
     /** For boxed verbatim. */
     protected boolean boxed;
 
@@ -166,14 +170,8 @@ public class XhtmlParser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized xhtml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xhtml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-modules/doxia-module-xhtml5/pom.xml b/doxia-modules/doxia-module-xhtml5/pom.xml
index b6080f8..49704f3 100644
--- a/doxia-modules/doxia-module-xhtml5/pom.xml
+++ b/doxia-modules/doxia-module-xhtml5/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -52,5 +56,10 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
index cf79171..be887a7 100644
--- a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
+++ b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
@@ -40,6 +40,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse an xhtml model and emit events into a Doxia Sink.
@@ -49,6 +51,8 @@ public class Xhtml5Parser
     extends Xhtml5BaseParser
     implements Xhtml5Markup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( Xhtml5Parser.class );
+
     /**
      * The role hint for the {@link Xhtml5Parser} Plexus component.
      */
@@ -168,14 +172,8 @@ public class Xhtml5Parser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized xhtml5 tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xhtml5 tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-sink-api/pom.xml b/doxia-sink-api/pom.xml
index f662d12..38c0c9c 100644
--- a/doxia-sink-api/pom.xml
+++ b/doxia-sink-api/pom.xml
@@ -33,10 +33,4 @@ under the License.
   <name>Doxia :: Sink API</name>
   <description>Doxia Sink API.</description>
 
-  <dependencies>
-      <dependency>
-        <groupId>org.apache.maven.doxia</groupId>
-        <artifactId>doxia-logging-api</artifactId>
-      </dependency>
-  </dependencies>
 </project>
diff --git a/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java b/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
index 2eaf255..b5c4e5e 100644
--- a/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
+++ b/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.sink;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.LogEnabled;
-
 /**
  * A <i>Sink</i> consumes Doxia events to produce a resultant output format
  * (eg Docbook, PDF, XHTML...).
@@ -56,7 +54,6 @@ import org.apache.maven.doxia.logging.LogEnabled;
  * @author ltheussl
  */
 public interface Sink
-    extends LogEnabled
 {
     /** The Plexus Sink Role. */
     String ROLE = Sink.class.getName();
diff --git a/pom.xml b/pom.xml
index 125f059..88c131e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,7 +55,6 @@ under the License.
   </contributors>
 
   <modules>
-    <module>doxia-logging-api</module>
     <module>doxia-sink-api</module>
     <module>doxia-test-docs</module>
     <module>doxia-core</module>
@@ -88,6 +87,7 @@ under the License.
     <maven.site.path>doxia-archives/doxia-LATEST</maven.site.path>
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,MethodName,InnerAssignment,MagicNumber</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2021-11-28T20:51:17Z</project.build.outputTimestamp>
+    <slf4jVersion>1.7.32</slf4jVersion>
   </properties>
 
   <dependencyManagement>
@@ -100,11 +100,6 @@ under the License.
       </dependency>
       <dependency>
         <groupId>org.apache.maven.doxia</groupId>
-        <artifactId>doxia-logging-api</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven.doxia</groupId>
         <artifactId>doxia-test-docs</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -190,6 +185,18 @@ under the License.
         <version>2.6</version>
       </dependency>
 
+      <!--  SLF4J -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>${slf4jVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-simple</artifactId>
+        <version>${slf4jVersion}</version>
+      </dependency>
+
     </dependencies>
   </dependencyManagement>
 
diff --git a/src/site/resources/images/doxia-deps.png b/src/site/resources/images/doxia-deps.png
index 403b355..05d52f9 100644
Binary files a/src/site/resources/images/doxia-deps.png and b/src/site/resources/images/doxia-deps.png differ
diff --git a/src/site/xdoc/doxia-deps.odg b/src/site/xdoc/doxia-deps.odg
index e5b9992..3e9875f 100644
Binary files a/src/site/xdoc/doxia-deps.odg and b/src/site/xdoc/doxia-deps.odg differ
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index cc84617..0f2a25d 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -35,7 +35,7 @@
 
       <p>The actual component is the base component from the whole Doxia suite, with the core parser and sink APIs and
       their implementation in supported markup languages.</p>
-      
+
       <p>It is used by the <a href="../doxia-sitetools">Doxia Sitetools</a> extension,
       that adds site and documents support.</p>
 
@@ -43,7 +43,6 @@
         <img src="images/doxia-deps.png" border="0" usemap="#Doxia_dependencies" />
         <map name="Doxia_dependencies">
           <area shape="rect" coords="0,280,122,308"  href="./doxia-test-docs/" />
-          <area shape="rect" coords="324,363,481,403" href="./doxia-logging-api/" />
           <area shape="rect" coords="135,231,286,261" href="./doxia-sink-api/" />
           <area shape="rect" coords="165,180,286,209" href="./doxia-core/" />
           <area shape="rect" coords="41,25,118,88"    href="./doxia-modules/doxia-module-apt/" />
@@ -51,10 +50,10 @@
           <area shape="rect" coords="230,25,313,88"   href="./doxia-modules/doxia-module-xhtml/" />
           <area shape="rect" coords="325,25,407,88"   href="./doxia-modules/doxia-module-xhtml5/" />
           <area shape="rect" coords="135,25,213,88"   href="./doxia-modules/doxia-module-fml/" />
-          <area shape="rect" coords="304,75,336,107"  href="./doxia-modules/doxia-module-markdown/" />
+          <area shape="rect" coords="304,75,421,107"  href="./doxia-modules/doxia-module-markdown/" />
           <area shape="rect" coords="21,1,432,151"     href="./doxia-modules/" />
           <area shape="rect" coords="308,178,439,208"  href="https://github.com/vsch/flexmark-java" />
-          <area shape="rect" coords="521,364,676,403" href="https://codehaus-plexus.github.io/" />
+          <area shape="rect" coords="164,280,286,310" href="https://codehaus-plexus.github.io/" />
         </map>
       </p>