Я нашел полное решение, которым хочу поделиться с вами.
Ранее я пробовал каждый из них самостоятельно, но вы должны объединить некоторые из методов, упомянутых в других ответах.
- Вам необходимо написать собственный LogDelegate:
import org.hornetq.spi.core.logging.LogDelegate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Slf4jLogDelegate implements LogDelegate {
private final Logger logger;
public Slf4jLogDelegate(Class clazz) {
logger = LoggerFactory.getLogger(clazz);
}
@Override
public void debug(Object message) {
logger.debug(message.toString());
}
@Override
public void debug(Object message, Throwable t) {
logger.debug(message.toString(), t);
}
@Override
public void error(Object message) {
logger.error(message.toString());
}
@Override
public void error(Object message, Throwable t) {
logger.error(message.toString(), t);
}
@Override
public void fatal(Object message) {
logger.error(message.toString());
}
@Override
public void fatal(Object message, Throwable t) {
logger.error(message.toString(), t);
}
@Override
public void info(Object message) {
logger.info(message.toString());
}
@Override
public void info(Object message, Throwable t) {
logger.info(message.toString(), t);
}
@Override
public boolean isDebugEnabled() {
return logger.isDebugEnabled();
}
@Override
public boolean isInfoEnabled() {
return logger.isInfoEnabled();
}
@Override
public boolean isTraceEnabled() {
return logger.isTraceEnabled();
}
@Override
public void trace(Object message) {
logger.trace(message.toString());
}
@Override
public void trace(Object message, Throwable t) {
logger.trace(message.toString(), t);
}
@Override
public void warn(Object message) {
logger.warn(message.toString());
}
@Override
public void warn(Object message, Throwable t) {
logger.warn(message.toString(), t);
}
}
- Тогда вам нужно написать фабрику:
import org.hornetq.spi.core.logging.LogDelegate;
import org.hornetq.spi.core.logging.LogDelegateFactory;
public class Slf4jLogDelegateFactory implements LogDelegateFactory {
// Maybe caching of delegates makes sense?
@Override
public LogDelegate createDelegate(Class clazz) {
return new Slf4jLogDelegate(clazz);
}
}
- Затем добавьте в файл hornetq-configuration.xml следующую строку:
<log-delegate-factory-class-name>yourpackage.Slf4jLogDelegateFactory</log-delegate-factory-class-name>
- Наконец, добавьте следующую строку перед запуском встроенного сервера:
org.hornetq.core.logging.Logger.setDelegateFactory(new Slf4jLogDelegateFactory());
Мне просто интересно, почему они не могут использовать проверенные механизмы ведения журналов, которые облегчают обмен регистраторами.