7.5. Log4J を使用して OptaPlanner ソルバーアクティビティーをログに記録する
すでに Log4J を使用していて、より高速な後継である Logback に切り替えたくない場合は、Log4J 用に OptaPlanner プロジェクトを設定できます。
前提条件
- OptaPlanner プロジェクトがあります
- Log4J ロギングフレームワークを使用しています
手順
ブリッジの依存関係をプロジェクトの
pom.xmlファイルに追加します。<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.x</version> </dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.x</version> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、
log4j.xmlファイルのパッケージorg.optaplannerでログレベルを設定します。ここで、<LEVEL>はにリストされているログレベルです。「Logback を使用して OptaPlanner ソルバーアクティビティーをログに記録する」 。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 複数の
ソルバーインスタンスが同時に実行されている可能性があるマルチテナントアプリケーションがある場合は、各インスタンスのログを別々のファイルに分割します。solve()呼び出しをマップされた診断コンテキスト (MDC) で囲みます。MDC.put("tenant.name",tenantName); MySolution bestSolution = solver.solve(problem); MDC.remove("tenant.name");MDC.put("tenant.name",tenantName); MySolution bestSolution = solver.solve(problem); MDC.remove("tenant.name");Copy to Clipboard Copied! Toggle word wrap Toggle overflow ${tenant.name}ごとに異なるファイルを使用するようにロガーを設定します。たとえば、logback.xmlファイルでSiftingAppenderを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数のソルバーまたは 1 つのマルチスレッドソルバーを実行する場合、コンソールを含むほとんどのアペンダーは、
デバッグおよびトレースログで輻輳を引き起こします。この問題を回避するには、非同期アペンダーに切り替えるか、デバッグログをオフにします。