log4j2.xmlの自動構成を正しく適用するのに問題があり、フォルダーの配置と関係があると思います。
私はmavenを使用してlog4j2ライブラリを追加し、プロジェクトを次のように配置しています。-
システムのサーバー側とクライアント側で使用されるすべての「共通」クラスを含む1つのプロジェクト。
-別の「コア」プロジェクト-サーバー側アプリケーション。
両方のプロジェクトは、同じ一般的なパッケージ階層(com.foo.specific.packageなど)を使用します
Common Projectでは、ロガーラッパーを定義します。
public class LogWrapper
{
static Logger systemParentLogger = LogManager.getLogger("com.foo");
public static Logger getLogger(Class<?> cls)
{
return LogManager.getLogger(cls.getName());
}
}
さらに、Commonプロジェクトには、META-INFの下にlog4j2.xmlファイルが含まれています(Hibernateで使用するためのpersistence.xmlファイルと一緒に)。
<?xml version="1.0" encoding="UTF-8"?>
<configuration name="PRODUCTION" status="OFF">
<appenders>
<appender type="RollingFile"
name="MyFileAppender"
fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<layout type="PatternLayout" pattern="%d %p %C{1.} [%t] %m%n"/>
</appender>
</appenders>
<loggers>
<root level="error">
<appender-ref ref="MyFileAppender"/>
</root>
<logger name="com.foo" level="info" additivity="false">
<appender-ref ref="MyFileAppender"/>
</logger>
<logger name="org.hibernate" level="error">
<appender-ref ref=MyFileAppender"/>
</logger>
</loggers>
</configuration>
Coreプロジェクトでサンプルコードを実行している間(私が作成したLogWrapperといくつかのJPAブードゥーを使用)、INFO休止状態ログを表示でき、ログファイルは作成されませんでした。コードのデバッグ中に、フェッチされたロガーに奇妙な値「com.foo.core.persistence.PersistenceXMLTest:ERRORinsun.misc.Launcher$AppClassLoader@2f600492」が指定されていることがわかりました。