web-dev-qa-db-ja.com

log4j2-StatusLogger Log4j 2構成ファイルが見つかりません。デフォルトの構成を使用する

これは私の設定ファイルです:

<Configuration status="INFO">
  <Properties>
    <Property name="log-path">./log</Property>
  </Properties>
  <Appenders>
    <RollingFile name="RollingFile" fileName="${log-path}/mylog.log" filePattern="${log-path}/mylog-%d{yyyy-MM-dd}-%i.log">
      <PatternLayout>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]\t%m%n</pattern>
      </PatternLayout>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB" />
      </Policies>
      <DefaultRolloverStrategy max="32" />
    </RollingFile>


    <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false">
      <PatternLayout>
        <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]\t%m</pattern>
      </PatternLayout>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="mylog" level="debug" additivity="false">
      <appender-ref ref="RollingFile" level="DEBUG" />
      <appender-ref ref="STDOUT" level="DEBUG" />
    </Logger>

  </Loggers>
</Configuration>

しかし、私は次のエラーを受け取ります:

エラーStatusLogger Log4j 2構成ファイルが見つかりません。デフォルトの構成(コンソールにエラーのみを記録)、またはユーザーがプログラムで提供した構成を使用します。システムプロパティ 'log4j2.debug'を設定して、Log4j 2の内部初期化ログを表示します。 Log4j 2を構成する方法については、 https://logging.Apache.org/log4j/2.x/manual/configuration.html を参照してください。

どうすれば解決できますか?

これは私のMaven依存関係です:

<dependency>
    <groupId>org.Apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.0</version>
</dependency>

/ logディレクトリに定義されたパターンを使用して正しく書き込むため、ログ構成ファイルは非常に明確に読み取られます。

これは私のコードでそれをインスタンス化する方法です:

LoggerContext lcontext = (org.Apache.logging.log4j.core.LoggerContext)  LogManager.getContext(false)
Logger logger = LogManager.getLogger("mylog");
3
user3804769

Webサーブレットを使用している場合は、次の依存関係も必要になります。

<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>

https://logging.Apache.org/log4j/2.x/maven-artifacts.html

1
ezzadeen

from log4j-user-guide 6.1.1 Configuration

  1. wEB-INFディレクトリに場所がない場合... "log4j2" ...

しかし、これは機能しません(少なくとも私の場合)。以下のものは動作します:

WEB-INF/classes/log4j2.xml

お役に立てれば。

アプリケーションサーバー:wildfly 14

0
a.lgl

System.setProperty("log4j.configurationFile", log4j2ConfigFile);を使用して、log4j2構成ファイルの場所をシステムに通知できるはずです

0
Zaxxon

私の場合、ファイルをsrc/main/resourcesに置いていました。しかし、Mavenプラグインによって作成されたJARにlog4j2.xmlファイルが含まれていないため、Log4Jはまだそれを見つけることができませんでした。

この問題を取り除くために、ファイルをフォルダーのルート(pom.xmlのすぐ隣)に置きました。これで、Mavenプラグインを使用してJARファイルを作成したときに、Log4jがそれにアクセスできました。そしてそれはうまくいった! :)

これがお役に立てば幸いです。

0
Sameer Patel