[Java教程]JavaWeb应用中初始化Log4j的两种方式
0 2017-04-02 00:00:44
本文主要介绍了普通JavaWeb应用(基于Tomcat)中初始化Log4j的两种方式:
1、通过增加 InitServlet ,设置令其自启动来初始化 Log4j 。
2、通过监听器 ServletContextListener 监听 ServletContext 的初始化事件来初始化 Log4j 。
先来看下方式一,直接上代码:
web.1 5 6 initServlet 7 com.michael.controll.InitServlet 8 9 log4j10 WEB-INF/config/log4j.properties11 12 113 14 15 16 initServlet17 /initServlet.do18 19 20
其中参数 1 指定 initServlet 随 web 应用的部署而自启动,启动优先级为 1,此数值越小,优先级越高。
并在参数 WEB-INF/config/log4j.properties 中指定 log4j.properties 文件存放的位置。
InitServlet 代码如下:1 public class InitServlet extends HttpServlet { 2 @Override 3 public void init() throws ServletException { 4 super.init(); 5 String prefix = getServletContext().getRealPath("/"); 6 // Log4J 7 String log4jFile = getServletConfig().getInitParameter("log4j"); 8 String log4jConfigPath = prefix + log4jFile; 9 PropertyConfigurator.configure(log4jConfigPath);10 }11 }
这样即可完成 log4j 的初始化工作。再来看下方式二,通过监听器 ServletContextListener 监听 ServletContext 的初始化事件来初始化 Log4j 。
web.1 2 6 7 8 log4j 9 WEB-INF/config/log4j.properties10 11 12 13 com.michael.listener.MyServletContextListener14 15 16
同样在 servletContext 初始化参数 WEB-INF/config/log4j.properties 中指定文件存放位置。
下面看下监听 servletContext 初始化的监听器:1 public class MyServletContextListener implements ServletContextListener { 2 3 @Override 4 public void contextInitialized(ServletContextEvent servletContextEvent) { 5 ServletContext ctx = servletContextEvent.getServletContext(); 6 String prefix = ctx.getRealPath("/"); 7 // Log4J 8 String log4jFile = ctx.getInitParameter("log4j"); 9 String log4jConfigPath = prefix + log4jFile;10 PropertyConfigurator.configure(log4jConfigPath);11 System.out.println("initialized log4j finish");12 }13 14 @Override15 public void contextDestroyed(ServletContextEvent servletContextEvent) {16 17 }18 }
在 context 初始化完成后调用 contextInitialized 方法完成 Log4j 的初始化。
值得注意的是,无论在 1 参数中把自启动 servlet 的优先级设置的多高,这个 servlet 的 init 方法都会在ServletContextListener 的 contextInitialized 方法调用之后才被调用。
本篇随笔主要用于个人备忘,如有不对,敬请指出!
本文网址:http://www.shaoqun.com/a/305542.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
JAVA
0