【问题标题】:Log4j path Configuration Error In J2EE Web ApplicationJ2EE Web 应用程序中的 Log4j 路径配置错误
【发布时间】:2013-08-20 11:34:45
【问题描述】:

我在使用 DOMConfigurator 在我的 Java EE Web 应用程序中使用 Log4j 时遇到问题。我的类路径上有 log4j.jar 文件,以及 log4j.xml 文件的路径 /WEB-INF/config/log4j.xml

以下是例外:

  log4j:ERROR Could not parse file [/WEB-INF/config/log4j.xml].
  java.io.FileNotFoundException: D:\WEB-INF\config\log4j.xml (The system cannot find the      path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at org.apache.log4j.xml.DOMConfigurator$1.parse(DOMConfigurator.java:749)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:871)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:755)
at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:896)
at org.tree.egc.Utils.RequestFilter.init(RequestFilter.java:64)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

以下是在 servlet 中获取 log4j.xml 文件的代码:

   String log4jpath=Config.getInitParameter("log4j");       
   DOMConfigurator.configure(log4jpath);

进入web.xml

    <init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/config/log4j.xml</param-value>
</init-param>

【问题讨论】:

  • 如果您坚持从文件系统加载它,您需要提供 real 路径,例如,脱离 servlet 上下文。 IMO 将其保留在类路径中会更干净,Log4J 默认会在其中查找它。
  • 按照此线程中的说明进行操作:stackoverflow.com/questions/7151832/…

标签: java xml servlets path log4j


【解决方案1】:

将您的配置文件“log4j.xml”移动到类路径(/WEB-INF/classes/log4j.xml)中

如果您的 log4j.xml 在类路径中,当您启动应用服务器时,它应该会自动加载。

如果您仍然遇到路径问题。试试这个

   ServletContext servletContext = request.getSession().getServletContext();
   String log4jpath=Config.getInitParameter("log4j");       
   String absoluteDiskPath = servletContext.getRealPath(log4jpath);

   DOMConfigurator.configure(absoluteDiskPath);

也请检查此链接 Log4j.xml throw file not found in Java EE application

【讨论】:

  • 嗨 Rakesh,我已将 log4j.xml 放在类路径 (/WEB-INF/classes/log4j.xml) 上,但问题仍然存在。
  • 编辑我的答案。请检查。
  • 工作正常非常感谢 Rakesh
猜你喜欢
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多