7.4. 使用 Logback 记录 OptaPlanner solver 活动
Logback 是推荐与 OptaPlanner 搭配使用的日志记录框架。使用 Logback 记录 OptaPlanner solver 活动。
先决条件
- 您有一个 OptaPlanner 项目。
流程
将以下 Maven 依赖项添加到 OptaPlanner 项目的
pom.xml
文件中:注意您不需要添加额外的网桥依赖项。
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.x</version> </dependency>
在
logback.xml
文件中的org.optaplanner
软件包上配置日志级别,如下例所示,其中 <LEVEL>
; 是 第 7.4 节 “使用 Logback 记录 OptaPlanner solver 活动” 中列出的日志级别。<configuration> <logger name="org.optaplanner" level="<LEVEL>"/> ... </configuration>
可选:如果您有一个多租户应用程序,其中多个
Solver
实例可能会同时运行,请将每个实例的日志记录分开到单独的文件中:与 映射的诊断上下文 (MDC)周围的
solve ()
调用:MDC.put("tenant.name",tenantName); MySolution bestSolution = solver.solve(problem); MDC.remove("tenant.name");
将您的日志记录器配置为为每个
${tenant.name}
使用不同的文件。例如,在logback.xml
文件中使用SiftingAppender
:<appender name="fileAppender" class="ch.qos.logback.classic.sift.SiftingAppender"> <discriminator> <key>tenant.name</key> <defaultValue>unknown</defaultValue> </discriminator> <sift> <appender name="fileAppender.${tenant.name}" class="...FileAppender"> <file>local/log/optaplanner-${tenant.name}.log</file> ... </appender> </sift> </appender>
注意当运行多个 solvers 或一个多线程解决时,大多数附加程序(包括控制台)会导致
debug
和trace
日志记录。切换到 async 附加器以避免出现这个问题或关闭调试日志记录
。
-
如果 OptaPlanner 无法识别新级别,请临时添加系统属性
-Dlogback.LEVEL=true
进行故障排除。