I suggest you create an implementation of org.apache.avalon.framework.logger.Logger that will take an SLF4J logger. Similar to this one here - https://svn.ametys.org/trunk/runtime/trunk/main/kernel/src/org/ametys/runtime/util/SLF4JLogger.java
CommonsLogger equivalent for slf4j
-
11-12-2021 - |
Question
We are migrating from commons-logging to slf4j.
We are using org.apache.fop.apps.Driver class to generate PDF files. Now, setLogger() method of Driver class takes org.apache.avalon.framework.logger.Logger as an argument.
CommonsLogger method is provided in org.apache.avalon.framework.logger package that converts commons-logging logger into org.apache.avalon.framework.logger.Logger.
Please find below sample code:
org.apache.fop.apps.Driver driver = new Driver();
driver.setLogger(new CommonsLogger(logger, getClass().getName()));
Now, what shall be the replacement for slf4j logger?
Best, I can guess is using NullLogger() instead of CommonsLogger(). Please tell me if any better solution available.
Solution
OTHER TIPS
Not sure how to map fatal
log message type to SL4J's but here is code snippet that works:
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;
}
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow