我找到了一个完整的解决方案,我想与你分享。我之前已经自己尝试过其中的每一个,但是您必须结合其他答案中提到的一些技术。
导入 org.hornetq.spi.core.logging.LogDelegate;
导入 org.slf4j.Logger;
导入 org.slf4j.LoggerFactory;
公共类 Slf4jLogDelegate 实现 LogDelegate {
私有最终 Logger 记录器;
公共 Slf4jLogDelegate(类 clazz){
记录器 = LoggerFactory.getLogger(clazz);
}
@覆盖
公共无效调试(对象消息){
logger.debug(message.toString());
}
@覆盖
公共无效调试(对象消息,Throwable t){
logger.debug(message.toString(), t);
}
@覆盖
公共无效错误(对象消息){
logger.error(message.toString());
}
@覆盖
公共无效错误(对象消息,Throwable t){
logger.error(message.toString(), t);
}
@覆盖
公共无效致命(对象消息){
logger.error(message.toString());
}
@覆盖
公共无效致命(对象消息,Throwable t){
logger.error(message.toString(), t);
}
@覆盖
公共无效信息(对象消息){
logger.info(message.toString());
}
@覆盖
公共无效信息(对象消息,Throwable t){
logger.info(message.toString(), t);
}
@覆盖
公共布尔 isDebugEnabled() {
返回 logger.isDebugEnabled();
}
@覆盖
公共布尔 isInfoEnabled() {
返回 logger.isInfoEnabled();
}
@覆盖
公共布尔 isTraceEnabled() {
返回 logger.isTraceEnabled();
}
@覆盖
公共无效跟踪(对象消息){
logger.trace(message.toString());
}
@覆盖
公共无效跟踪(对象消息,Throwable t){
logger.trace(message.toString(), t);
}
@覆盖
公共无效警告(对象消息){
logger.warn(message.toString());
}
@覆盖
公共无效警告(对象消息,Throwable t){
logger.warn(message.toString(), t);
}
}
导入 org.hornetq.spi.core.logging.LogDelegate;
导入 org.hornetq.spi.core.logging.LogDelegateFactory;
公共类 Slf4jLogDelegateFactory 实现 LogDelegateFactory {
// 也许缓存代表有意义?
@覆盖
公共 LogDelegate createDelegate(Class clazz) {
返回新的 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());
我只是想知道为什么他们不能使用经过验证的日志记录机制,这使得交换记录器变得容易。