我正在尝试使用log4j来构建应用程序级别(java / java ee)日志记录的组件。我可以创建组件的jar并将其放在任何应用程序的类路径中并使用它。我遵循以下方法
我覆盖了调试,跟踪,信息等日志方法。
单个和多个参数替换例如MessageFormatter.format("Hi {}. My name is {}.", "Alice", "Bob");
将返回字符串“嗨Alice。我的名字是Bob。”。
例如说跟踪消息
public boolean isTraceEnabled() { return logger.isTraceEnabled();}
public void trace(String msg, Throwable throwable, Object... args) {
log(isTraceEnabled(),throwable,msg,args);//
}
private void log(boolean isEnabled, Throwable throwable, String msg,Object... args)
{
if(throwable!=null){
String message=MessageFormatter.getFormattedMessage(throwable);//Formated the exception message
msg=msg+message;
throwable=null;
}
if (args == null || args.length == 0) {
logger.log(FQCN,LEVELmsg, throwable);
} else {
if (isEnabled) {
String formattedMsg = MessageFormatter.arrayFormat(msg, args);//single and multiple argument substutution
logger.log(FQCN, UtilConstant. Level.TRACEformattedMsg, throwable);
}
}
}
我的目标是构建可以满足所有Java EE应用程序的组件。这两种方法是否足够,或者我需要做更多的事情。请帮忙。
答案 0 :(得分:3)
在我看来,你正在重新发明轮子。查看SLF4J,它可以执行您要实现的目标,并且它可以保护您免受基础消息传递系统的影响,您可以随时更改它(它也适用于log4j开箱即用)