关于struts中日志的配置问题

来源:互联网 发布:如何更新mac os版本 编辑:程序博客网 时间:2024/05/17 23:20

考虑到性能问题,不打算引入额外的log4j.jar包。在struts的lib中有一个commons-logging-1.0.4.jar包,现在我来说一下它的运行机制。

在Struts中对日志功能的使用遵循以下的步骤:

  1. 如果你自己导入了log4j.jar包并在WEB-INF/classes目录下添加log4j.properties,即可启用log4j。(注意:不需要加入commons-logging.properties文件;还有如果项目中有spring加入spring会自动加入log4j.jar包)

  2. 如果存在JDK1.4, 使用JDK1.4

  3. 如果两者都不存在,就使用SimpleLog。

现在我重点来说我们这个BSPF项目中用到的比较高性能的SimpleLog类的具体配置。

其实很简单,只要在你的WEB-INF/classes目录中加入两个properties配置文件就OK了。

###这个是commons-logging.properties文件

###指定你要用的日志类

org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog###这个是simplelog.properties文件

###首先指定你的输出级别:必须为”trace”, “debug”, “info”, “warn”, “error”, or “fatal”

###从trace到fatal级别越来越高,低级包括高级别的日志输出,默认为info

org.apache.commons.logging.simplelog.defaultlog=fatal

###输出的日志消息中是否包含当前日志器实例的简写名字,默认true

org.apache.commons.logging.simplelog.showShortLogname

###输出的日志消息中是否应包含当前时间信息,默认false

org.apache.commons.logging.simplelog.showdatetime

###最后注意一点SimpleLog类把日志输出到System.err中,无需你自己配置

###虽然现在不能到文件中,但以后可以改源码或换成log4j还是比较方便,不用改程序的源码最后再给大家一个example

/** 

*
@author:hujinpu 

*@time:2007-4-12 
*/
 
  
// 必须引入的两个类 
  
import org.apache.commons.logging.LogFactory; 
  
import org.apache.commons.logging.Log; 
  
public class LoggingTest 
  
    
// SimpleLog会为每个类单独输出一个日志 
  
    
private static Log log = LogFactory.getLog(LoggingTest.class); 
  
    
public static void main(String[] args) 
  
        
/** 
         * 
         * 
         * 
         * 大家注意,我没有直接去执行log.trace之类的操作,而是先作了一个判断,这是有道理的。 
         * 
         * 
         * 
         * 其实无非就是一个性能的问题 
         * 
         * 
         * 
         * 大家想想,如果我在simplelog.properties文件中org.apache.commons.logging.simplelog.defaultlog=fatal,也就是 
         * 
         * 
         * 
         * 指定了最高级别,那就没有fatal错误以下的日志输出到System.err了,那我还在调用log.trace方法不是一种多余 
         * 
         * 
         * 
         * 特别是在里面还有一个String 
         * 
         * msg = 
         * 
         * "你想出现的信息",然后再log.trace(msg)这不是对内存开销更大。 
         * 
         * 
         * 
         * 
         * 
         
*/
 
  
        
if (log.isTraceEnabled()) 
            log.trace(
"Test logging trace level"); 
        }
 
  
        
if (log.isDebugEnabled()) 
            log.debug(
"Test logging debug level"); 
        }
 
  
        
if (log.isInfoEnabled()) 
            log.info(
"Test logging info level"); 
        }
 
  
        
if (log.isWarnEnabled()) 
            log.warn(
"Test logging warn level"); 
        }
 
  
        
if (log.isErrorEnabled()) 
            log.error(
"Test logging error level"); 
        }
 
  
        
if (log.isFatalEnabled()) 
            log.fatal(
"Test logging fatal level"); 
        }
 
  
    }
 
}

原创粉丝点击