【发布时间】:2014-09-08 05:08:49
【问题描述】:
遇到了一个奇怪的要求。我需要将唯一的错误 ID 附加到 log4j 消息并将该消息 ID 返回到接口。所以,我虽然让我们创建一个 spring 服务,像这样
public class LoggingService {
protected static Logger logger = LoggerFactory.getLogger(LoggingService.class);
public String debug(String debug_msg)
{
String uniqueMsgId = generateUniqueId();
logger.debug(concatIdWithMsg(uniqueMsgId, debug_msg));
return uniqueMsgId;
}
}
并将其自动连接到我需要的任何地方。
public class LoginLogoutController {
@Autowired
LoggingService logger;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String getLoginPage()
{
logger.debug("Login page requested");
}
}
虽然效果很好,但是 logger msg 中的源类是 LoggingService,这是显而易见的。我想要的是传递自动装配 LoggingService 的类,以便记录器消息显示问题的原始来源。我试图以某种方式改变服务 但不知道如何传递源类
public class LoggingService<T> {
protected static Logger logger = null;
Class<T> sourceClass;
public void construct(Class<T> sourceClass)
{
this.sourceClass = sourceClass;
logger = LoggerFactory.getLogger(sourceClass);
}
public String debug(String debug_msg)
{
String uniqueMsgId = generateUniqueId();
logger.debug(concatIdWithMsg(uniqueMsgId, debug_msg));
return null;
}
}
【问题讨论】: