Log4j日志组件 - 终极资料(4)
这是格式化日志输出并把它发向目标的消耗。在这儿,大量的努力再次被花费在让布局器(格式化器)执行尽可能地快。这是和输出源相同地。真正地记录日志的典型消耗大约从100到300微秒。参考org.apache.log4.performance.Logging获得准确数字。
尽管log4j有许多特点,但是它的首要目标是速度。为了提高性能,一些log4j组件已经被重写了好多次了。然而,贡献者还在不断地提出新地优化。你应该很高兴,当你知道使用SimpleLayout配置记录日志时,测试显示log4j和System.out.println地速度一样快。 结论
Log4j是一个用java写的优秀日志软件包。它与众不同地特色之一是继承日志记录器概念。用用日志记录器层次,使按任意的粒度控制日志语句输出成为可能。这有助于减少日志输出量,并最小化日志消耗。
Log4j API的特色之一是它的易管理性。一旦日志语句被插入代码,他们可以用配置文件来控制。他们可以有选择的激活或不激活。Log4j包被设计以便于日志语句可以以漂码(in shipped code)的方式保存,而不会致使大量的性能消耗。 感谢
非常感谢N. Asokan审阅了这篇文章。他logger概念的创立者之一。感谢Nelson Minar鼓励我写这片文章。他也对这篇文章提出了许多有用的建议和修正。Log4j是集体努力的结果。谢谢所有对这个项目作出贡献的作者。毫无例外,在包中最好的特色已经在用户社群中广泛创建了。
/************************************************/ 下面中盛友成做的实例
/***********************************************/
一、建Web Project工程,将log4j-1.2.13.jar导入到WEB-INF\\lib下 二、建servlet,名称为:Log4jInit.java 内容如下:
/////////////////////////////////////////////////////////////// package com.sys86.log4j; import java.io.IOException;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.log4j.PropertyConfigurator; public class Log4jInit extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
public void init() throws ServletException {
String prefix = getServletContext().getRealPath(\ String file = getInitParameter(\ if(file != null){
PropertyConfigurator.configure(prefix+file); } } }
//////////////////////////////////////////////////////
三、建TestBean.java类(可以自己随便写一下)
///////////////////////////////////////////////////// package com.sys86.test;
import org.apache.log4j.Logger; import org.apache.log4j.Priority; public class TestBean {
private static Logger logger = Logger.getLogger(TestBean.class); protected String title; public String getTitle() {
logger.debug(\这里是Log4j获得的信息\ return title; }
public void setTitle(String title) {
logger.info(\这里是Log4j获得的信息\ logger.debug(\
logger.info(\ logger.warn(\ logger.error(\ logger.fatal(\ logger.log(Priority.DEBUG, \ logger.debug(\ this.title = title; } }
////////////////////////////////////////////////////////////
四、在src下建log4j.properties文件,内容如下:下面只写了部分参数,全部的见详细说明 //////////////////////////////////////////////////////////// log4j.rootCategory=INFO,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=C:\\\\SysTestLog4j.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
log4j.logger.com.neusoft=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR log4j.logger.net.sf.navigator=ERROR log4j.logger.org.apache.commons=ERROR log4j.logger.org.apache.struts=WARN log4j.logger.org.displaytag=ERROR
log4j.logger.org.springframework=DEBUG log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
log4j.logger.org.logicalcobwebs=WARN
///////////////////////////////////////////////////////////////
五、在web.xml中添加初始化参数,代码如下:
///////////////////////////////////////////////////////////////
xmlns=\
xmlns:xsi=\ xsi:schemaLocation=\ http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\
//////////////////////////////////////////////////////////////
六、再加一个index.jsp调用测试吧。
///////////////////////////////////////////////////////////// <%@ page language=\
<%
testBean.setTitle(\我是从index.jsp中设定的值***\%>
