2013-02-11 126 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關於類似的問題。