これは私の設定ファイルです:
<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");
Webサーブレットを使用している場合は、次の依存関係も必要になります。
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
from log4j-user-guide 6.1.1 Configuration:
- wEB-INFディレクトリに場所がない場合... "log4j2" ...
しかし、これは機能しません(少なくとも私の場合)。以下のものは動作します:
WEB-INF/classes/log4j2.xml
お役に立てれば。
アプリケーションサーバー:wildfly 14
System.setProperty("log4j.configurationFile", log4j2ConfigFile);
を使用して、log4j2構成ファイルの場所をシステムに通知できるはずです
私の場合、ファイルをsrc/main/resourcesに置いていました。しかし、Mavenプラグインによって作成されたJARにlog4j2.xmlファイルが含まれていないため、Log4Jはまだそれを見つけることができませんでした。
この問題を取り除くために、ファイルをフォルダーのルート(pom.xmlのすぐ隣)に置きました。これで、Mavenプラグインを使用してJARファイルを作成したときに、Log4jがそれにアクセスできました。そしてそれはうまくいった! :)
これがお役に立てば幸いです。