7.5. 使用 Log4J 记录 OptaPlanner solver 活动


如果您已使用 Log4J,且您不想切换到更快速的成功者,则您可以为 Log4J 配置 OptaPlanner 项目。

先决条件

  • 您有一个 OptaPlanner 项目
  • 您可以使用 Log4J 日志记录框架

流程

  1. 将网桥依赖项添加到项目 pom.xml 文件中:

        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.x</version>
        </dependency>
    Copy to Clipboard Toggle word wrap
  2. log4j.xml 文件中的软件包 org.optaplanner 上配置日志级别,如下例所示,其中 < LEVEL&gt; 是 第 7.4 节 “使用 Logback 记录 OptaPlanner solver 活动” 中列出的日志级别。

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
      <category name="org.optaplanner">
        <priority value="<LEVEL>" />
      </category>
    
      ...
    
    </log4j:configuration>
    Copy to Clipboard Toggle word wrap
  3. 可选:如果您有一个多租户应用程序,其中多个 Solver 实例可能会同时运行,请将每个实例的日志记录分开到单独的文件中:

    1. 映射的诊断上下文 (MDC)周围的 solve () 调用:

              MDC.put("tenant.name",tenantName);
              MySolution bestSolution = solver.solve(problem);
              MDC.remove("tenant.name");
      Copy to Clipboard Toggle word wrap
    2. 将您的日志记录器配置为为每个 ${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>
      Copy to Clipboard Toggle word wrap
      注意

      当运行多个 solvers 或一个多线程解决时,大多数附加程序(包括控制台)会导致 debugtrace 日志记录。切换到 async 附加器以避免出现这个问题或关闭 调试日志记录

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat