2011-12-19 164 views
0

我正在尝试为使用log4j.where的应用程序级别(java/java ee)日志记录创建组件,并将它放在类路径中任何应用程序和使用它。下面的方法我都遵循在java/java EE应用程序中使用log4j记录组件

  1. 我重写像调试,跟踪,信息等日志方法

  2. 单个和多个参数substutution例如MessageFormatter.format("Hi {}. My name is {}.", "Alice", "Bob");将返回字符串“嗨,爱丽丝,我叫鲍勃。”

  3. 说,例如用于跟踪消息

    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

这是做什么log4j(或slf4j或其他人)还没有做? – Thilo 2011-12-19 07:43:46

回答

3

在我看来,你正在重新发明轮子。查看SLF4J,它可以完成您要实现的目标,并且可以保护您免受底层邮件系统的攻击,您可以随时更改该邮件系统(它也适用于log4j)。