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. WinForm小白的WPF初试一:从PropertyGrid控件,输出内容到Word(上)

    学WinForm也就半年,然后转到WPF,还在熟悉中.最近拿到一个任务:从PropertyGrid控件,输出内容到Word.难点有: 一.PropertyGrid控件是WinForm控件,在WPF中并 ...

  2. jquery内容选择器(匹配包含指定选择器的元素)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. hibernate---注解--CascadeType属性

    cascade表示级联操作 CascadeType.MERGE级联更新:若items属性修改了那么order对象保存时同时修改items里的对象.对应EntityManager的merge方法 Cas ...

  4. Junit很少出现的一个问题 No tests found matching ...

    java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=test2], {ExactMatcher:fDisp ...

  5. objective-c IOS应用更新

    当前苹果已经禁止了,通过IOS应用直接跳转APP下载链接的方法.但是仍然可以使用另外一种方法直接跳转AppStore. 这种方法需要增加一个类库StoreKit.framework. 这里使用这功能是 ...

  6. CSV.js – 用于 CSV 解析和编码的 JS 工具库

    逗号分隔值(CSV )文件用于以以纯文本的形式存储表格化数据(数字和文本). CSV 文件包含任意数量的记录,通过某种换行符分隔,每条记录由字段,其他一些字符或字符串分隔,最常用的是文字逗号或制表符. ...

  7. apache EnableMMAP指令

    官方说明地址:http://httpd.apache.org/docs/2.4/mod/core.html#enablemmap Use memory-mapping to read files du ...

  8. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  9. 深入理解javascript(一)

    此段文章摘自大叔的博客: 此文的目的是书写可维护的javascript代码. 最小的全局变量: JavaScript通过函数管理作用域.在函数内部声明的变量只在这个函数内部,函数外面不可用.另一方面, ...

  10. css中的background属性

    第一次写博客,我就写写今天在编写网页的过程中,对background的两种运用,一是background中的线性渐变,对背景的渐变我其实是很少使用的,所以今天在写的时候我用css3的帮助手册,back ...