2013-02-18 54 views
0

我在运行Java 1.7.0_13/64的Windows7/64上看到我的logj2.xml存在问题。我试图通过调试器使用NetBeans/64 7.2.1 IDE运行应用程序。使用NetBeans时看不到Log4j2.xml文件

log4j2.xml位于我的r:\目录中。 (用户)类路径是“。; r:\”。它显然没有被看到,因为当我在调试器中查看记录器的'config.config.name'时,它给了我'Default'的值。另外,我无法在我的机器的任何驱动器上的任何位置找到log4j2.xml文件中指定的文件。我还在我的机器上查找了包含单词'default'的任何新文件,并且可以找到没有最新的文件。

所以我怀疑我做1 2的东西错了:

1)设置我的类路径不正确。 2)把我的log4j2.xml文件错误地放在一起。

任何帮助,将不胜感激。我的钥匙因用前额敲击而变得粘稠。

这里的配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="debug" name="xxx" packages="" > 
    <appenders> 
     <RollingFile name="log" fileName="qqq.log" 
      immediateFlush="true" filePattern="qqq-%d{yyyy-MM-dd}.log"> 
     <PatternLayout> 
      <pattern>"%d{YYYY-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %n%msg%n%n%n"</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy /> 
      <SizeBasedTriggeringPolicy /> 
     </Policies> 
     <DefaultRolloverStrategy max="92"/> 
     </RollingFile> 
    </appenders> 
    <loggers> 
    <root level="trace"> 
     <appender-ref ref="log"/> 
    </root> 
    </loggers> 
</configuration> 
+0

我相信问题可能是IDE可能不知道环境中的CLASSPATH变量。在IDE中有一个可以添加编译器选项的文本框,我将在这里添加适当的类路径值以指向log4j2.xml文件。当我尝试这个时,我会报告回来。 – joe7pak 2013-02-19 19:04:25

+0

这在Netbeans中不起作用,将jar文件放在'编译时库'中会创建一个事实上的类路径。通过在编译器选项文本框中放入'-cp blah; blahblah',不再使用事实上的类路径,并且必须在项目中指定每个jar文件。也许有一种方法可以使这两种方法都起作用,但我不会陷入这个兔子洞。 – joe7pak 2013-02-20 00:29:08

回答

1

好,知道了。我将这个问题重命名为包含NetBeans,因为这是我的问题的要点。

作为一个审查,它需要log4j2.xml文件需要在类路径上。虽然我可以通过将jar文件添加到项目中来影响NetBeans中的类路径,但我最初并没有考虑在类路径中找到配置文件。无论如何,一旦我意识到这一点,我在项目属性中玩了一下,最后发现只是将文件夹添加到“编译时库”对话框(在本例中为“r:\”)会将配置文件放在类路径,我的日志工作就像它应该。

Whe!

希望这可以帮助别人。

1

感谢joe7pak,您的文章是解决NetBeans中log4j属性问题的难题的最后一部分。我的问题需要一些额外的步骤,可能有助于解决这个问题。

首先,我使用http://wiki.apache.org/logging-log4j/Log4jXmlFormat的默认xml在src目录中创建了一个log4j.xml文件。

然后,我将Properties \ Run中的NetBeans VM选项设置为:-Dlog4j.debug。我注意到一个jar的(httpbuilder)log4j.xml文件是默认加载的,而不是我的。

因此,我使用您的建议将src文件夹添加到Properties \ Libraries中的编译时库。但是,它仍然从jar中加载log4j.xml文件。

最后一步是将src文件夹移动到编译时间库的顶部。

感谢您的文章和回答自己。