Java Web实践专题——Log4j

 
           在开发应用的过程中,日志可以用于调试程序、跟踪程序的运行轨迹。在程序运行过程中,可以记录程序的运行状态,并用于审计。
日志有多种实现,Log4j是一种比较流行的实现。本文介绍Log4j日志的使用。
Log4j日志的使用包括如下过程:
l        获取日志的实现;
l        编写配置文件;
l        初始化;
l        使用。
下面分别进行介绍。
1、获取日志实现
日志实现通常位于压缩包中,压缩包的名字log4j-1.2.15.jar,存放的位置:WEB-INF/lib下面。最新版本可以从官方网站下载。
2、配置
要使用Log4j需要先进行配置,日志的配置需要使用配置文件,可以采用属性文件也可以采用XML文件,本文介绍的实例采用属性文件。属性文件的位置:WEB-INF下面,名字为:log4j.properties。
日志文件的主要内容:
1)设置跟记录器
设置根记录器的基本格式如下:
log4j.rootLogger=debug,R
等号后面包括两个信息:日志级别和日志目的。
日志级别包括:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
日志目的可以是任意的名字,可以有多个。
2)设置日志的类型
日志的类型包括:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
rg.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
设置日志的类型可以使用下面的代码:
log4j.appender.R=org.apache.log4j.RollingFileAppender
3)设置日志文件的相关属性
如果日志的类型是文件,需要指出文件的位置,通过如下方式指出:
log4j.appender.R.File=${catalina.home}/logs/my.log
日志文件的大小通过如下方式制定:
log4j.appender.R.MaxFileSize=10MB
日志文件重复数
log4j.appender.R.MaxBackupIndex=10
4 )日志文件的输出方式
常用日志的输出方式如下:
org.apache.log4j.HTMLLayout
org.apache.log4j.PatternLayout
org.apache.log4j.SimpleLayout
org.apache.log4j.TTCCLayout
下面的代码用于设置文件输出方式:
log4j.appender.R.layout=org.apache.log4j.PatternLayout
5 )日志文件的输出格式
    如果使用PatternLayout,可以使用下面的格式符号。
%r        自程序开始后消耗的毫秒数
%t        表示日志记录请求生成的线程
%p        表示日志语句的优先级别
%r        与日志请求相关的类别名称
%c        日志信息所在的类
%m%n      表示日志信息的内容
例如:
log4j.appender.R.layout.ConversionPattern=%p %t %c -%m%n
下面是一个完整的配置文件的内容(#表示注释):
# debug表示日志的级别,R表示其中一个日志,名字可以随便取
log4j.rootLogger=debug, R  
 
#日志的类型
log4j.appender.R=org.apache.log4j.RollingFileAppender
 
#日志的文件
log4j.appender.R.File=${catalina.home}/logs/my.log
 
# 日志文件的大小
log4j.appender.R.MaxFileSize=10MB
 
# 日志文件的
log4j.appender.R.MaxBackupIndex=10
 
# 输出方式
log4j.appender.R.layout=org.apache.log4j.PatternLayout
 
# 具体输出方式
log4j.appender.R.layout.ConversionPattern=%p %t %c -%m%n
3、初始化
可以使用多种方式进行初始化,过程基本相同。下面是采用Servlet进行初始化的例子,参考代码如下:
Servlet源文件:
package bookstore.servlet;
 
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
 
import org.apache.log4j.PropertyConfigurator;
 
public class Log4JServlet extends HttpServlet{
 
    public void init() throws ServletException{
         String path = getServletContext().getRealPath("/");
         String filename = path+"/WEB-INF/log4j.properties";
         PropertyConfigurator.configure(filename);
    }
}
    为了让Web应用启动的时候加载该Servlet,需要在web.xml中配置<load-on-startup>元素。参考代码如下:
web.xml中的声明:
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 
    <servlet>
       <servlet-name>log4j</servlet-name>
       <servlet-class>bookstore.servlet.Log4JServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
    </servlet>
 
    <servlet-mapping>
       <servlet-name>log4j</servlet-name>
       <url-pattern>/log4j</url-pattern>
    </servlet-mapping>
</web-app>
4、调用
日志配置完并初始化之后,就可以使用了。使用过程主要就是获取日志器,然后调用相应的方法即可。
获取日志器的方法如下:
Logger Logger.getLogger(String str)
参数相当于指出日志的类别,返回值是Logger对象。
Logger对象用于输出日志信息的方法如下:
fatal(String info)
error(String info)
warn(String info)
info(String info)
debug(String info)
注意:在使用的时候需要导入org.apache.log4j.Logger。
下面是一个使用Log4j的例子:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="org.apache.log4j.Logger"%>
<%
   Logger log = Logger.getLogger("testLogger");
 
   log.debug("debug message"); 
   log.error("error message");
   log.warn("warn message");
   log.info("info message");
   log.fatal("fatal message");
%>
    运行结果如下:(格式为 %p %t %c -%m%n):
DEBUG http-8080-1 testLogger - debug message
ERROR http-8080-1 testLogger - error message
WARN http-8080-1 testLogger - warn message
INFO http-8080-1 testLogger - info message
FATAL http-8080-1 testLogger - fatal message
 
5、扩展知识
正常情况下日志的使用不是在JSP文件中,而是在业务层、或者控制层,并且使用日志的文件会有很多,所以通常在基类中创建Logger对象,然后在各个子类中直接使用各个输出信息的方法即可。
 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值