• 转载 Log4j2在WEB项目中配置


    最近决定在新WEB项目中使用新的日志系统Log4j2。

    官方介绍和学习文档网址为http://logging.apache.org/log4j/2.x/

    首先在WEB项目中引入以下几个jar包:

    ① log4j-api-2.4.1.jar

    ② log4j-core-2.4.1.jar

    ③ log4j-web-2.4.1.jar

    按照以往的思路,简单修改web.xml中的Log配置如下:

    1   <context-param>
    2     <param-name>log4jConfigLocation</param-name>
    3     <param-value>/WEB-INF/conf/log4j2.xml</param-value>
    4   </context-param>

    然后启动项目,就出现了这个错误信息【ERROR StatusLogger No Log4j context configuration provided. This is very unusual】。

    注意,默认的配置文件是log4j2.xml,而不是log4j.xml了。

    按照网上的大神转来转去的一个Servlet 2.5的配置怎么试都报这个错误(没有关于3.0的配置介绍)。

    没办法了,只有去官网仔细学习了。

    我的项目使用Servlet 3.0,着重看了官网的MANUAL->Web Applications and JSPs->Servlet 3.0 and Newer这一段。

    发现以下几个注意点:

    一、Tomcat 7.0.43以前的版本,需要从catalina.properties的配置项【jarsToSkip】中屏蔽掉“log4j*.jar”这一选项。

    二、context-param中关于配置文件的路径信息配置是【log4jConfiguration】而不是log4jConfigLocation。

    三、context-param中需要增加配置信息【log4jContextName】。

    四、Listener和Filter相关的配置在Servlet 3.0以上被log4j-web-2.4.1.jar“自动”的初始化了。

    我的Tomcat版本是7.0.65(七系最新版,所以第一个问题不存在)。

    重新配置web.xml后的片段如下:

    复制代码
    1     <context-param>
    2         <param-name>log4jContextName</param-name>
    3         <param-value>star</param-value>
    4     </context-param>
    5 
    6     <context-param>
    7         <param-name>log4jConfiguration</param-name>
    8         <param-value>/WEB-INF/conf/log4j2.xml</param-value>
    9     </context-param>
    复制代码

    重新发布项目,竟然还是报错,不能正确的初始化和使用!

    好吧,不卖关子了,这个问题最终查到了,属于最难查的问题范畴了,就是“我原以为”系列。

    1 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2     xmlns="http://java.sun.com/xml/ns/javaee"
    3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    4     version="2.5">

    看到了吧,web.xml中的Servlet的版本声明写错了,我在项目中实际使用的是Servlet 3.0。

    将【2_5】改为【3_0】,将【2.5】改为【3.0】。

    OK,可以使用性能指数级提升的Log4j2了。

    上善若水,水利万物而不争。
  • 相关阅读:
    经典javascript
    大话prototype
    DataTable使用方法总结
    实验四 Web服务器1socket编程
    2.4 OpenEuler中C语言中的函数调用测试
    20191323王予涵第13章学习笔记
    20191323王予涵第十三章学习笔记
    2.5 OpenEuler 中C与汇编的混合编程
    个人贡献
    20191323王予涵第十二章学习笔记
  • 原文地址:https://www.cnblogs.com/pegasus827/p/9491935.html
Copyright © 2020-2023  润新知