4

次のlog4j2構成があります

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Appenders>
        <RollingRandomAccessFile name="SQLTiming" fileName="${web:rootDir}/log/SQLTiming.log"
            filePattern="${web:rootDir}/log/SQLTiming-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{2} - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingRandomAccessFile>
        <Console name="CONSOLE">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{2} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="jdbc.sqltiming" level="info" additivity="false">
            <AppenderRef ref="SQLTiming" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="CONSOLE" />
        </Root>
    </Loggers>
</Configuration>

slf4j 経由でロガーを取得しようとすると

    protected static Logger logger = LoggerFactory.getLogger(DbConn.class);

Log4j はアペンダーの作成に失敗します。log4j2 ソースを調べたところ、ファイルを作成しようとしましたがC:\Program Files\eclipse\${web:rootDir}\log\SQLTiming.log(失敗しました)、log4j がルックアップを処理しなかったようです。

Tomcat 7.0.4 でアプリケーションを実行しており、http://logging.apache.org/log4j/2.x/manual/lookups.htmlで提案されている構文を使用しています。$${web:rootDir} (2 つの $ マーク付き) を使用してみましたが、その結果、$-s の 1 つが削除されましたが、検索はまだ成功しませんでした。実際、他のルックアップはどれも成功しませんでした (環境変数など)。Log4j のバージョンは 2.0 beta9 です。

他の誰かがこれに似たものを見たことがありますか? 何か不足していますか?

4

3 に答える 3

0

Tomcat スタンドアロンで実行していますか、それとも Eclipse プラグインで実行していますか? Log4J がルックアップの値を見つけられない場合、名前にパターンを含むファイルが作成されます (これが表示されているものです)。そのため、ルックアップは失敗しています。作成しようとしているファイルが Eclipse インストール ディレクトリの下にあるという事実は、実行しているプロセスが Tomcat ではなく Eclipse であることを示しています。どのプラグインを使用していますか?

Tomcat を Eclipse プラグインとして実行している場合、すべての ${web:...} 環境変数が正しく設定されていない可能性があります。Tomcat スタンドアロンで上記の設定で実行すると、正しく動作すると思いますが、これを確認できますか?

Log4J チームがこれについて何かできるかどうかはわかりませんが、https://issues.apache.org/jira/browse/LOG4J2でこの問題を提起してみてください。Eclipse Tomcat プラグインの作成者に問い合わせることもできます。

于 2013-09-25T21:44:40.893 に答える