读书人

log4j在web.xml如何配置啊

发布时间: 2012-01-19 20:57:58 作者: rapoo

log4j在web.xml怎么配置啊?
log4j在web.xml怎么配置啊?还有那个文件输出的地方我要把它输出到工程目录下面,如何设置?哪位大哥大姐指教一下。

[解决办法]
常用log4j配置
二、log4j.xml
<?xml version= "1.0 " encoding= "GB2312 " ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd ">
<log4j:configuration xmlns:log4j= "http://jakarta.apache.org/log4j/ ">
<appender name= "org.zblog.all " class= "org.apache.log4j.RollingFileAppender ">
<!-- 设置通道ID:org.zblog.all和输出方式:org.apache.log4j.RollingFileAppender -->
<param name= "File " value= "E:/study/log4j/all.output.log " /> <!-- 设置File参数:日志输出文件名 -->
<param name= "Append " value= "false " /> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name= "MaxBackupIndex " value= "10 " />
<layout class= "org.apache.log4j.PatternLayout ">
<param name= "ConversionPattern " value= "%p (%c:%L)- %m%n " /> <!-- 设置输出文件项目和格式 -->
</layout>
</appender>
<appender name= "org.zblog.zcw " class= "org.apache.log4j.RollingFileAppender ">
<param name= "File " value= "E:/study/log4j/zhuwei.output.log " />
<param name= "Append " value= "true " />
<param name= "MaxFileSize " value= "10240 " /> <!-- 设置文件大小 -->
<param name= "MaxBackupIndex " value= "10 " />
<layout class= "org.apache.log4j.PatternLayout ">
<param name= "ConversionPattern " value= "%p (%c:%L)- %m%n " />
</layout>
</appender>
<logger name= "zcw.log "> <!-- 设置域名限制,即zcw.log域及以下的日志均输出到下面对应的通道中 -->
<level value= "debug " /> <!-- 设置级别 -->
<appender-ref ref= "org.zblog.zcw " /> <!-- 与前面的通道id相对应 -->
</logger>
<root> <!-- 设置接收所有输出的通道 -->
<appender-ref ref= "org.zblog.all " /> <!-- 与前面的通道id相对应 -->
</root>
</log4j:configuration>
三、配置文件加载方法:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jApp {
public static void main(String[] args) {
DOMConfigurator.configure( "E:/study/log4j/log4j.xml ");//加载.xml文件
//PropertyConfigurator.configure( "E:/study/log4j/log4j.properties ");//加载.properties文件
Logger log=Logger.getLogger( "org.zblog.test ");
log.info( "测试 ");
}
}
四、项目使用log4j
在web 应用中,可以将配置文件的加载放在一个单独的servlet中,并在web.xml中配置该servlet在应用启动时候加载。对于在多人项目中,可以给每一个人设置一个输出通道,这样在每个人在构建Logger时,用自己的域名称,让调试信息输出到自己的log文件中。
五、常用输出格式
# -X号:X信息输出时左对齐;
# %p:日志信息级别
# %d{}:日志信息产生时间
# %c:日志信息所在地(类名)
# %m:产生的日志具体信息
# %n:输出日志信息换行

[解决办法]
web.xml配置:

<servlet>
<servlet-name> log4j-init </servlet-name>
<servlet-class> com.log4j.Log4jInit </servlet-class>
<init-param>
<param-name> log4j </param-name>
<param-value> WEB-INF/log4j.properties </param-value>
</init-param>
<load-on-startup> 1 </load-on-startup>
</servlet>

初始化的servlet:
/*
* 创建日期 2006-7-26
*


* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.log4j;

/**
* @author ray
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
import org.apache.log4j.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Log4jInit extends HttpServlet {
public void init() {
String prefix = getServletContext().getRealPath( "/ ");
String file = getInitParameter( "log4j ");
// if the log4j-init-file is not set, then no point in trying
System.out.println( "................log4j start ");
if(file != null) {
PropertyConfigurator.configure(prefix+file);
System.out.println(prefix+file);
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res) {
}
}
[解决办法]
a. web.xml
add following code to web.xml
<servlet>
<servlet-name> log4j-init </servlet-name>
<servlet-class> com.legendinfo.log.Log4jInit </servlet-class>
<init-param>
<param-name> log4j-init-file </param-name>
<param-value> WEB-INF/classes/log4j.property </param-value>
</init-param>
<load-on-startup> 1 </load-on-startup>
</servlet>
b.create a special servlet for log4j initialazation
save the file in the web-info/classes folder
package com.legendinfo.log;
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
public class Log4jInit extends HttpServlet {
public void init() {
String prefix = getServletContext().getRealPath( "/ ");
String file = getInitParameter( "log4j-init-file ");
// if the log4j-init-file is not set, then no point in trying
if(file != null) {
PropertyConfigurator.configure(prefix+file);
System.out.println( "Init Log4j success! ");
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res) {
}
}

c.create a log4j.property file that define the log4j properties
the property file is setting in web.xml
a sample property file as following

log4j.rootLogger=INFO, A1 ,R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=../logs/log4j.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.TTCCLayout


d.a test Jsp page
testLog.jsp:
<%@ page import= "org.apache.log4j.* "%>
<html>
<body>
<%
//log4j.appender.appenderName = WEB-INF/classes/log4j.log

Logger logger = Logger.getLogger( "com.legendinfo ");
logger.setLevel(Level.INFO);
Logger barlogger = Logger.getLogger( "com.legendinfo.log ");
logger.warn( "Low fuel level. ");
logger.debug( "Starting search for nearest gas station. ");
barlogger.info( "Located nearest gas station. ");
barlogger.debug( "Exiting gas station search ");


%>
</body>
</html>

读书人网 >Java Web开发

热点推荐