【问题标题】:CommonsLogger equivalent for slf4jslf4j 的 CommonsLogger 等效项
【发布时间】:2012-12-21 10:00:26
【问题描述】:

我们正在从 commons-logging 迁移到 slf4j。

我们正在使用 org.apache.fop.apps.Driver 类来生成 PDF 文件。现在,Driver 类的 setLogger() 方法将 org.apache.avalon.framework.logger.Logger 作为参数。

org.apache.avalon.framework.logger 包中提供了CommonsLogger 方法,将commons-logging logger 转换为org.apache.avalon.framework.logger.Logger。

请在下面找到示例代码:

org.apache.fop.apps.Driver driver = new Driver();
driver.setLogger(new CommonsLogger(logger, getClass().getName()));

现在,slf4j logger 的替代品是什么?

最好,我猜是使用 NullLogger() 而不是 CommonsLogger()。请告诉我是否有更好的解决方案。

【问题讨论】:

    标签: slf4j apache-commons-logging


    【解决方案1】:

    我建议您创建一个 org.apache.avalon.framework.logger.Logger 的实现,它将采用 SLF4J 记录器。与此处类似 - https://svn.ametys.org/trunk/runtime/trunk/main/kernel/src/org/ametys/runtime/util/SLF4JLogger.java

    【讨论】:

      【解决方案2】:

      不确定如何将 fatal 日志消息类型映射到 SL4J,但这里有代码 sn-p 有效:

      import lombok.extern.slf4j.Slf4j;
      import org.apache.avalon.framework.logger.Logger;
      
      @Slf4j
      public class SL4JLoggerAdapter implements Logger {
          public static final int LEVEL_DEBUG = 0;
          public static final int LEVEL_INFO = 1;
          public static final int LEVEL_WARN = 2;
          public static final int LEVEL_ERROR = 3;
          public static final int LEVEL_FATAL = 4;
          public static final int LEVEL_DISABLED = 5;
      
          private final int m_logLevel;
      
          public SL4JLoggerAdapter( final int logLevel )
          {
              m_logLevel = logLevel;
          }
      
          @Override
          public void debug(String message) {
              log.debug(message);
          }
      
          @Override
          public void debug(String message, Throwable throwable) {
              log.debug(message, throwable);
          }
      
          @Override
          public boolean isDebugEnabled() {
              return m_logLevel == LEVEL_DEBUG;
          }
      
          @Override
          public void info(String message) {
              log.info(message);
          }
      
          @Override
          public void info(String message, Throwable throwable) {
              log.info(message, throwable);
          }
      
          @Override
          public boolean isInfoEnabled() {
              return m_logLevel == LEVEL_INFO;
          }
      
          @Override
          public void warn(String message) {
              log.warn(message);
          }
      
          @Override
          public void warn(String message, Throwable throwable) {
              log.warn(message, throwable);
          }
      
          @Override
          public boolean isWarnEnabled() {
              return m_logLevel == LEVEL_WARN;
      
          }
      
          @Override
          public void error(String message) {
              log.error(message);
          }
      
          @Override
          public void error(String message, Throwable throwable) {
              log.error(message, throwable);
          }
      
          @Override
          public boolean isErrorEnabled() {
              return m_logLevel == LEVEL_ERROR;
          }
      
          @Override
          public void fatalError(String message) {
              log.trace(message);
          }
      
          @Override
          public void fatalError(String message, Throwable throwable) {
              log.trace(message, throwable);
          }
      
          @Override
          public boolean isFatalErrorEnabled() {
              return m_logLevel == LEVEL_FATAL;
      
          }
      
          @Override
          public Logger getChildLogger(String name) {
              return this;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-08-02
        • 2011-08-19
        • 1970-01-01
        • 2020-10-05
        • 2013-05-26
        • 2011-03-18
        • 2012-07-17
        • 2012-11-03
        • 2010-09-11
        相关资源
        最近更新 更多