servlet配置log4J

用Spring配置Log4j比较简单。但是servlet配置的时候会因为项目启动后没加载log4j而报错

这篇随笔就主要处理这些。

第一步:导入jar包,在src目录下创建src/log4J.properties 文件。

文件内容如下:

###设置###

log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target = System.out

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File = E://logs/log.log

log4j.appender.D.Append = true

log4j.appender.D.Threshold = DEBUG

log4j.appender.D.layout = org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File =E\://logs/error.log

log4j.appender.E.Append = true

log4j.appender.E.Threshold = ERROR

log4j.appender.E.layout = org.apache.log4j.PatternLayout

log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

该配置可以在控制台或者后台文件中输出日志记录。info,error,debug都可以输出。导出文件路径自己可以修改,格式内容自己也可以修改。

上方格式输出如下:[INFO ] 2017-10-25 15:21:24,025 method:com.dhh.day1.HelloServlet.doGet(HelloServlet.java:29)

在类中创建日志对象如下:

publicLogger log=Logger.getLogger(HelloServlet.class);


但是单单靠这些会产生一个错误:

log4j:WARN No appenders could be found for logger (com.dhh.day1.HelloServlet).

log4j:WARN Please initialize the log4j system properly.


第二步:这个错误的核心在于项目启动之后log4j并没有与配置文件产生关联,所以这个时候需要再servlet增加配置信息让log4J加载

代码如下如下:

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

加载的类文件是一个servlet:核心在于log4j的一个静态类方法

PropertyConfigurator.configure(String URL); 

package com.dhh.Util;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.PropertyConfigurator;publicclassLog4jInitextends HttpServlet { 

    privatestaticfinallongserialVersionUID = 1L; 


    @Override 

    protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp) 

            throws ServletException, IOException { 

        // TODO Auto-generated method stub  super.doGet(req, resp); 

    } 


    @Override 

    protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp) 

            throws ServletException, IOException { 

        // TODO Auto-generated method stub  super.doPost(req, resp); 

    } 


    @Override 

    publicvoidinit()throws ServletException { 

        // TODO Auto-generated method stub  super.init(); 

        String prefix = getServletContext().getRealPath("/"); 

        String file = getInitParameter("log4j-init-file"); 

        if(file !=null) { 

            System.out.println("read log4j.properties:"+prefix + file); 

            PropertyConfigurator.configure(prefix + file); 

        } 

    } 



https://www.cnblogs.com/blackdeng/p/7729456.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,333评论 1 13
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,186评论 0 6
  • Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key...
    Alex_1799阅读 45,578评论 0 11
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan阅读 3,434评论 0 0
  • 大寒 冷 再冷一点 让寒冷到达极限 诗者能闱火炉共暖 温一盏清酒 讣春在酒后漫延 蚕的爱火,在天边发出呐喊 阳光㔾...
    柴山木棉阅读 150评论 0 0

友情链接更多精彩内容