1

テストにグラスフィッシュ 3.1 サーバーを使用する単純な Netbeans 7.1.2 (NON MAVEN) プロジェクトがあります。

log4j2.xml ファイルを作成し、クラスパスに配置しました。

<?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>

プロジェクトは休止状態を使用して、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

誰かが助けてくれたり、私がググってスタックオーバーフローしたアドバイスをくれたりするかもしれませんが、チャンスはありません。

パオロ

4

1 に答える 1

3

log4j2.xmlファイルに古い log4j スタイルの xml が混在していると思います。
アプリケーションのログ ファイルに休止状態のログを追加することに関して、私はあなたと同じ問題を抱えています。しかし、私はロガーエラーを助けることができると思います.

代わりにこのファイルを試してください (そして、私が行った変更に注意してください):

<?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 の自動構成を開始するためのクラスパスにある必要があることに注意してください。net
を使用して log4j2 を構成するときに行うべき最も重要なことは、log4jスタイルの構成ではなく、 log4j2を見ていることです。詳細については、 http://logging.apache.org/log4j/2.x/ を参照することをお勧めします。彼らはあなたがチェックアウトできる優れたダウンロード可能なpdfを持っています. さらに、同様の問題に関する私の質問を確認してください。

于 2013-02-22T11:59:05.803 に答える