Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口 服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

其实呢,我觉得他就是一个能对我们的WEB应用监控的组件,让我们可以了解到我们的程序运行的情况 ,以及出错后的相关记录。

我在用的时候报了一个错误

  1. 严重: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
  2. java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [D:\MyEclipseProject\.metadata\.me_tcat\webapps\ReservationSystem\] instead of [D:\MyEclipseProject\.metadata\.me_tcat\webapps\SpringMVCDemo\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

我们来看一下Log4j的配置:

  1. log4j.rootLogger=INFO, stdout, logfile
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  3. log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout
  4. #log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
  5. log4j.appender.stdout.layout.ConversionPattern=- %m%n
  6. log4j.appender.logfile=org.apache.log4j.RollingFileAppender
  7. log4j.appender.logfile.File=${webapp.root}/webapp.html
  8. log4j.appender.logfile.MaxFileSize=512KB
  9. # Keep three backup files.
  10. log4j.appender.logfile.MaxBackupIndex=3
  11. # Pattern to output: date priority [category] - message
  12. log4j.appender.logfile.layout=org.apache.log4j.HTMLLayout
  13. log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
  14. log4j.logger.com.opensymphony.xwork2=ERROR
  15. # Control logging for other open source packages
  16. log4j.logger.org.springframework=ERROR
  17. log4j.logger.org.quartz=ERROR
  18. log4j.logger.net.sf.ehcache=ERROR
  19. log4j.logger.net.sf.navigator=ERROR
  20. log4j.logger.org.apache.commons=ERROR
  21. log4j.logger.org.apache.struts=ERROR
  22. log4j.logger.org.hibernate=DEBUG
  23. # Struts OgnlUtil issues unimportant warnings
  24. log4j.logger.com.opensymphony.xwork2.util.OgnlUtil=error
  25. log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack=error

发现没有什么问题啊,但是,请注意${webapp.root}这个变量 ,对照着错误提示大概看了一下,意思是说Web应用程序根系统属性已经被设置,说白了就是说'webapp.root' 这个配置名称已经被使用了,不能再用这个了,

并且也提示了Choose unique values for the 'webAppRootKey' context-param in your web.xml files ,也就是说我们可以在web.xml里配置一个唯一的'webAppRootKey' ,这样就不会冲突了。

这个问题会出现在一个WEB服务器同时部署多个使用了Log4j的应用上,如果配置不当,出这个错误还真会让你郁闷到抓狂。我就是出这个问题了,一个Tomcat部署了2个使用了Log4j的项目。

然后我这样解决:按给的提示在web.xml里加上

  1. <context-param>
  2. <param-name>webAppRootKey</param-name>
  3. <param-value>myapp.root</param-value>
  4. </context-param>

然后在 log4j.properties里就写成${myapp.root},只要这个名称不重复,就不会产生Web app root system property already set to different value的错误了。虽然正式使用时一台服务器部署多个应用程序的情况会比较少,但是还是保险起见吧,也对我们的程序相关的命名标准化吧,把

${webapp.root}改成${[应用程序].root},这是个好习惯。

java.lang.IllegalStateException:Web app root system property already set to different value 错误原因及解决 Log4j的更多相关文章

  1. Web app root system property already set to different value 错误原因及解决

    http://yzxqml.iteye.com/blog/1761540 ——————————————————————————————————————————————————————————————— ...

  2. java.lang.IllegalStateException: Web app root system property already set to different value

    webAppRootKey是在java web项目的web.xml配置文件中表示项目的唯一标示,在Eclipse调试Web项目时,项目的路径是一个临时路径,不在真正的路径下,可以通过log4j日志的方 ...

  3. IllegalStateException : Web app root system property already set to different value问题详解

    一.问题描述     最近公司有了一个新项目,这个项目最近部署到测试服务器上的时候出现了一个问题. 严重: Exception sending context initialized event to ...

  4. 解决tomcat部署多个虚拟机时报IllegalStateException: Web app root system property already set to 的问题

    解决tomcat部署多个虚拟机时报IllegalStateException: Web app root system property already set to 的问题 在web.xml中添加如 ...

  5. Web app root system property already set to different value: 'webapp.root'

    java.lang.IllegalStateException: Web app root system property already set to different value: 'webap ...

  6. Cannot set web app root system property when WAR file is not expanded

    Cannot set web app root system property when WAR file is not expanded 在tomcat下面可以,在weblogic下面不行的处理方法 ...

  7. idea调试SpringMvc, 出现:”javax.servlet.ServletException: java.lang.IllegalStateException: Cannot create a session after the response has been committed"错误的解决方法

    调试拦截器出现以下错误: HTTP Status 500 - javax.servlet.ServletException: java.lang.IllegalStateException: Cann ...

  8. java.lang.IllegalStateException: Cannot run without an instance id.

    启动springboot,报错:quartz集群报错: Sep 09, 2016 5:33:47 AM org.apache.catalina.core.ApplicationContext log ...

  9. Eclipse------使用Debug As时报错java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/XXX

    报错信息: java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file ...

随机推荐

  1. C#中的可空值类型

    C# 不允许把 null 赋给一个值类型的数据.在 C# 中,以下语句是非法的: int a = null;    // 非法 但是,利用 C# 定义的一个修饰符,可将一个变量声明为一个可空(null ...

  2. C# 委托和事件(二):使用.Net框架中的EventArgs和EventHandler

    前面一篇里提到事件是通过委托来进行关联的,而委托是可以带各种各样的参数的,其中就可以用事件参数(EventArgs),同时,也可以用.Net框架里边提供的一个委托EventHandler来Handle ...

  3. ISP接口隔离原则

    一.定义 不应该强迫客户程序依赖并未使用的方法 二.接口污染 接口污染,在C#.C++这样的静态类型语言中是很常见的.一个接口会被他不需要的方法污染.在接口中假如一个方法只是为了能给它的一个子类带来好 ...

  4. 介绍开源的.net通信框架NetworkComms框架 源码分析(二十一 )TCPConnectionListener

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  5. 让.NET 4.0支持TLS1.2协议

    The default System.Net.ServicePointManager.SecurityProtocol in both .NET 4.0/4.5 is SecurityProtocol ...

  6. 初识orcl

    一.介绍基本数据库的端口号. SQLServer                  端口号:1433 MySql                          端口号:3306 Oracle    ...

  7. JavaScript基础------入门基础

    JavaScript他是一种描述性语言,使用JavaScript就是为了能和网页有更好的交互,下面切入主题进行讲解. 一.JavaScript 1.什么是JavaScript JavaScript是一 ...

  8. JSESSIONID与SESSION

    用spring security的时候遇到了一个很诡异的问题: 已经登录的用户,而且没有标记remember-me,在重启服务器之后还会显示已经登录状态 这就严重啦,这样子如果要在session中储存 ...

  9. ArcGIS Server 开发实践之【Search类】

    开发中整理的.不足之处还请谅解! ----------------------------------------------- Class:Search 调用方式:require(["es ...

  10. CodeIgniter_2 路由中定义伪静态 直接映射到相关的控制器

    某些情况下 隐藏路径信息 使用伪静态定义: RewriteRule ^no/torrent(.*)$ /index.php/torrent/doit/$1 CodeIgniter会自动识别到 no 控 ...