web应用配置log4j
log4j是用于将日志文件输出到指定地方的开源jar包由三个组件构成:logger 核心构件,日志级别限定,日志输出appender 日志输出目的位置layout 日志输出形式第一步: 编写一个配置文件 log4j.properties#define a logger named HelloLogger#log4j.logger.HelloLogger=INFO,console,filelog4j.logger.HelloLogger=INFO,console,file##APPENDERS###define an appender named console,which is set to be a ConsoleAppenderlog4j.appender.console=org.apache.log4j.ConsoleAppender#define an appender named file,which is set to be a RollingFileAppenderlog4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=d:/HelloLogger/log.txt##LAYOUT###assign a SimpleLayout to console appenderlog4j.appender.console.layout=org.apache.log4j.SimpleLayout#assign a PatternLayout to file appenderlog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%t %p -%m%n注:logger的实例对象是 HelloLogger第二步: 编写一个初始化配置的servelet LogServlet import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import org.apache.log4j.PropertyConfigurator;public class LogServlet extends HttpServlet {public void destroy() {super.destroy(); // Just puts "destroy" string in log}public void init() throws ServletException {//获取配置文件的完整路径String path = getServletContext().getRealPath("/");String profile = path +getInitParameter("profile");//配置Log4j环境PropertyConfigurator.configure(profile);}}第三步: 配置 web.xml<servlet><servlet-name>Log4j</servlet-name> <servlet-class>LogServlet</servlet-class> <init-param> <param-name>profile</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </init-param> <!--load-on-startup 表示此servlet启动的顺序,此列是servlet中第一个启动的--> <load-on-startup>1</load-on-startup> </servlet> 第四步:写jsp验证 <% Logger helloLogger = Logger.getLogger("HelloLogger"); helloLogger.debug("This is a debug level log message from the "+helloLogger.getName()); helloLogger.info("This is a info level log message from the "+helloLogger.getName()); helloLogger.warn("This is a warn level log message from the "+helloLogger.getName()); helloLogger.error("This is a error level log message from the "+helloLogger.getName()); helloLogger.fatal("This is a fatal level log message from the "+helloLogger.getName()); %>注: 1.配置文件 log4j.properties中log4j.appender.file.layout.ConversionPattern的参数含义如下:%c 输出日志信息所属的类的全名%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28%f 输出日志信息所属的类的类名%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行%m 输出代码中指定的信息,如log(message)中的message%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推%r 输出自应用启动到输出该日志信息所耗费的毫秒数%t 输出产生该日志事件的线程名