• 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)

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

        public  Logger 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-INFclasseslog4j.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;
    
    public class Log4jInit extends HttpServlet {  
        private static final long serialVersionUID = 1L;  
      
        @Override  
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
                throws ServletException, IOException {  
            // TODO Auto-generated method stub  
            super.doGet(req, resp);  
        }  
      
        @Override  
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
                throws ServletException, IOException {  
            // TODO Auto-generated method stub  
            super.doPost(req, resp);  
        }  
      
        @Override  
        public void init() 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);  
            }  
        }  
      
    }  

    这样servlet配置log4J才算完成。

  • 相关阅读:
    作业三(3)
    作业三(2)
    作业三(1)
    作业2(2)
    作业2(1)
    通读《构建之法》后有感
    自我介绍
    页面从服务器中浏览并添加图片显示
    lamda表达式 随机取数据的方法
    对js插件uploadify的一些操作
  • 原文地址:https://www.cnblogs.com/blackdeng/p/7729456.html
Copyright © 2020-2023  润新知