Log4j在Java中的使用

Log4j在Java中的使用

.JavaSE的用法

1.到官网下载log4j-1.2.17.jar,并把它放到项目的lib下,最后配置路径即可。

2.src目录下建立配置文件:log4j.xml或者log4j.properties,这样的话log4j会自动在该路径下读取相应的配置文件,完成配置。

3.配置文件的格式

log4j.properties为例,如下:

#对应的键值对为:类名或实例名或属性
#配置日志使用级别,即debug < info < warn < error < fatal,对于低于所选级别的,将不能输出。下面log.debug()不起作用
#设置两个输出目标:STDOUT,LOGFILE,变量名,随便取,但后面要相同
#格式为:输出最低级别和多个输出目标
log4j.rootLogger=INFO, STDOUT, LOGFILE
#指定第一个为控制台输出,同时所有log输出用转化为System.err输出
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Target=System.err
log4j.appender.STDOUT.layout=org.apache.log4j.SimpleLayout
#指定第二个为文件输出
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
#指定输出的文件名,在项目路径下建立文件,注意不是在src下
log4j.appender.LOGFILE.File=record.log
#指定输出格式,包括日期
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} %l %F %p %m%n

4. 测试实例

package test;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Log4jDemo2 {
    //以静态方式获取当前类的日志实例,用类初始化,记录当前类的行为
    private static Logger log = LogManager.getLogger(Log4jDemo2.class);
    public static void main(String[] args){
            log.debug("调试阶段");
            log.info("提示阶段");
            log.warn("警告阶段");
            log.error("错误阶段");
    }
}

5. 最终在控制台(红字)和项目路径下的日志文件record.log有记录信息。

record.log文件如下:

2015-11-22 03:19:20 test.Log4jDemo2.main(Log4jDemo2.java:11) Log4jDemo2.java INFO 提示阶段
2015-11-22 03:19:20 test.Log4jDemo2.main(Log4jDemo2.java:12) Log4jDemo2.java WARN警告阶段
2015-11-22 03:19:20 test.Log4jDemo2.main(Log4jDemo2.java:13) Log4jDemo2.java ERROR错误阶段

.JavaEE中的使用

log4j-1.2.17.jar放在lib下,将配置文件log4j.properties放在src下。建立一个Servlet,必须含有init(),init()初始化log4j的配置,init在服务器启动时就执行了,且执行一次。在web.xml中要配置初始化参数。输出日志文件路径前要加tomcat的路径变量

Servlet如下:Log4jInit.java

package myServlet;
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.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInit extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public void init(){
            String path = this.getServletContext().getRealPath("/");
            String fileName =  this.getInitParameter("log4j_conf_file");
            PropertyConfigurator.configure(path+ fileName);
            Logger log = LogManager.getLogger(Log4jInit.class);
            log.info(path +fileName);
            log.info("init" + this.getClass().getName());
    }
    public Log4jInit() {
            super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
            response.getWriter().append("Servedat: ").append(request.getContextPath());
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
            doGet(request,response);
    }
}


然后在该项目的web.xml下配置servletlog4j.properties最终会在WEB-INF/classes/下。

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


   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值