log4j(一):简单配置

以前写代码不太喜欢用日志,后来项目出问题了想跟踪一下都难,这时候才知道日志的好处。于是好好看了一下,特写个东东记录下。

1、新建一个web项目,在WEB-INF\lib下导入log4j-1.2.15.jar,并build path;

2、在src下新建log4j.properties,内容如下:

#log4j.rootLogger = [ level ] , appenderName, appenderName, ... 
log4j.rootLogger = info, console, R 
#level=INFO,all can be output 
#console is set to be a ConsoleAppender 
log4j.appender.console = org.apache.log4j.ConsoleAppender 
#console have four patterns 
#org.apache.log4j.HTMLLayout 
#org.apache.log4j.PatternLayout 
#org.apache.log4j.SimpleLayout 
#org.apache.log4j.TTCCLayout 
log4j.appender.console.layout = org.apache.log4j.PatternLayout 
#define the output type 
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n 
#file is set to output to a extra file 
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender 
#the absolute route of the log4j file 
log4j.appender.R.File = D:/logs/test2.log
#the size 
#log4j.appender.R.MaxFileSize = 500KB 
#back up a file 
#log4j.appender.R.MaxBackupIndex = 10
log4j.appender.File.Threshold = ALL
log4j.appender.R.layout = org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] - %m%n 

3、添加文件测试:

通过普通的main方法写日志:

package com.wjl.test;
import org.apache.log4j.Logger;
public class TestLog4j {
	public static Logger logger = Logger.getLogger(TestLog4j.class );
	public static void main(String[] args){
	     logger.info("使用info写入数据\r\n");
	     logger.debug("使用debug写入数据\r\n");
	     logger.error("使用error写入数据\r\n");
	     logger.warn("使用warn写入数据\r\n");
	}
}

执行main方法之后, D:/logs/test2.log会记录logger写入的信息和具体时间。

通过servlet写日志:

public class TestLog4jServlet extends HttpServlet {
	Logger logger = Logger.getLogger(TestLog4jServlet.class);
	public TestLog4jServlet() {
		super();
	}
	public void destroy() {
		super.destroy();
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		logger.info("----------------log4j测试开始----------------\r\n");
		logger.info("使用log4j添加日志信息方便跟踪数据\r\n");
		logger.info("----------------log4j测试结束----------------\r\n");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		int name = 10/0;//会出现异常,但是不会让日志文件中记录
		System.out.println(name);
		out.println(name);
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}
	public void init() throws ServletException {}
}

值得一提的是:

a、这样子的logger配置,只会记录手动收入的日志信息,如异常信息、服务器启动信息都不会自动记入日志。

b、按照上面的配置,生成的log文件不会出现在项目的根目录下,而是会出现在:项目所在盘符的根目录下。譬如我项目的目录为:D:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\webapps\TestWeb,生成的日志文件不在TestWeb的logs目录下,而是在D的logs文件夹下。

c、查看网上关于log4j.properties的配置,大部分都需要在web.xml中添加以下代码:

<context-param>
	<param-name>log4jConfigLocation</param-name>
	<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param> 
	<param-name>log4jRefreshInterval</param-name> 
	<param-value>600000</param-value> 
</context-param>

原以为以上代码是使用log4j必须的配置,后来去掉之后再测试发现还是可以用,无论是在以上哪种方式中都可以用,原因是因为我这个配置文件放在src也就是classpath下,项目一启动直接就能找到。

猜你喜欢

转载自1017401036.iteye.com/blog/2332173