2013-02-11 120 views
1

我有一个简单的使用glassfish 3.1服务器进行测试的Netbeans 7.1.2(NON MAVEN)项目。netbeans glassfish休眠log4j2

我创建了一个log4j2.xml文件,并把它放在classpath中 这里是

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Threshold" value="debug"/> 
     <param name="Target" value="System.out"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/> 
     </layout> 
    </appender> 
    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="file" value="c:\tmp\Program-Name.log"/> 
     <param name="MaxFileSize" value="500KB"/> 
     <param name="MaxBackupIndex" value="4"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/> 
     </layout> 
    </appender> 

    <logger name="org.hibernate"> 
     <level value="info" /> 
    </logger> 

    <root> 
     <priority value ="debug" /> 
     <appender-ref ref="console" /> 
     <appender-ref ref="rolling-file" /> 
    </root> 
</log4j:configuration> 

项目使用Hibernate将数据从Web服务到数据库存储。

但是我无法记录任何东西。我可以在Netbeans IDE中看到休眠日志,但是我看不到在文件系统文件上创建的日志。

我调用Web服务

SEVERE: ERROR StatusLogger Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored 
SEVERE: ERROR StatusLogger root contains an invalid element or attribute "priority" 
SEVERE: ERROR StatusLogger Unknown object "root" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored 

可能有人请帮助或给一些意见,我一派,stackoverflowed,但没有机会,当有此错误。

保罗

回答

3

我认为你log4j2.xml文件与旧的log4j风格的XML混合。
当你将hibernate日志附加到我的应用程序的日志文件时,我遇到同样的麻烦。但我认为我可以帮助记录器错误。

试试这个文件,而不是(请注意,我所做的更改):

<?xml version="1.0" encoding="UTF-8" ?> 
<configuration name="SOME_PROJ_NAME" status="OFF"> 
    <appenders> 
     <RollingFile name="rolling-file" fileName="c:/tmp/Program-Name.log" filePattern="c:/tmp/$${date:yyyy-MM}/Program-Name-%d{MM-dd-yyyy}-%i.log.gz"> 
      <PatternLayout> 
       <pattern>%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n</pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="6" modulate="true"/> 
       <SizeBasedTriggeringPolicy size="250 MB"/> 
      </Policies> 
     </RollingFile> 
    </appenders> 
    <loggers> 
     <root level="info" 
      <appender-ref ref="rolling-file"/> 
     </root> 
     <logger name="org.hibernate level="info"> 
      <appender-ref ref="rolling-file"/> 
     </logger> 
    </loggers> 
</configuration> 

这是很相似的,我使用了一个。请注意,这个文件应该在类路径log4j2自动配置在踢。
利用网络来配置log4j2时,你应该做的最重要的事情是,你正在看log4j2没有的log4j风格的配置。
我建议你看看http://logging.apache.org/log4j/2.x/了解更多信息。他们有一个很好的downloadable pdf,你可以检查。
另外,请查看my question关于类似的问题。