6

Java アプリケーションに埋め込まれている Log4j2 用の XML 構成ファイルを使用しようとしていますが、機能していません。

コード:

ConfigurationSource source = new ConfigurationSource(Main.class.getResourceAsStream("/in/gunbound/prelauncher/server/log4j2/log4j2.xml"));
ConfigurationFactory factory = (ConfigurationFactory) XMLConfigurationFactory.getInstance().getConfiguration(source);
ConfigurationFactory.setConfigurationFactory(factory);

エラー:

スレッド「メイン」の例外 java.lang.ClassCastException: org.apache.logging.log4j.core.config.XMLConfiguration は、in.gunbound.prelauncher.server で org.apache.logging.log4j.core.config.ConfigurationFactory にキャストできません.Main.main(Main.java:62)

4

4 に答える 4

2

ConfigurationFactoryXML 構成ファイルを使用する場合は、 を使用する必要はありません。XML ファイルが正しく設定されていることを確認してください。

ファイル名はlog4j2.xml

ファイルを classPath に追加する必要があります。

アプリケーションで適切な名前のロガーを取得します。これは、xml ファイルでロガーを設定するために使用した名前と同じです。こちらをご覧ください

于 2013-03-09T10:14:22.860 に答える
2

同様の問題がありました。これが私を助けた例です:

あなたの場合、次のようになります。

URI configuration = Main.class.getResource("/in/gunbound/prelauncher/server/log4j2/log4j2.xml").toURI();
Configurator.initialize("config", null, configuration);
于 2013-04-06T14:34:38.923 に答える
2

同じ問題があり、次のように解決しました:

import java.io.InputStream;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory.ConfigurationSource;
import org.apache.logging.log4j.core.config.XMLConfigurationFactory;

public class Log
{

    private Logger logger;

    public Log(String name)
    {
        InputStream is = Application.class.getResourceAsStream("log-config.xml");
        ConfigurationSource source = new ConfigurationSource(is);
        Configuration config = XMLConfigurationFactory.getInstance().getConfiguration(source);
        LoggerContext ctx = (LoggerContext) LogManager.getContext(true);

        ctx.stop();
        ctx.start(config);

        logger = ctx.getLogger(name);
    }

    public Logger getLog()
    {
        return logger;
    }

}

私は現在、ora dbに書き込むためにdatabaseAppenderでlog4j2ベータ9を使用しています。

于 2013-09-19T08:14:31.333 に答える