【问题标题】:Can I change OptaPlanner's logging level when using it as a local project dependency?将 OptaPlanner 用作本地项目依赖项时,我可以更改它的日志记录级别吗?
【发布时间】:2022-01-27 18:21:31
【问题描述】:

我在 Eclipse 中有一个使用 OptaPlanner (v8.12.0) 的项目。我希望能够在 OptaPlanner 代码本身中编写临时调试语句,所以我:

  1. 克隆了 repo,
  2. 已签出分支8.12.x
  3. 使用mvn构建,
  4. 导入为预先存在的 Maven 项目 optaplanner-core(同样是 Eclipse),并且
  5. 从我的 Gradle 依赖项中删除了 optaplanner-core 依赖项

一切都可以正常编译和运行,但 OptaPlanner 不再响应我的日志配置更改。

我们正在使用 Log4j2,当使用标准构建过程 (Gradle) 拉出 OptaPlanner 时,我可以使用 Log4j2 配置很好地设置日志级别。但是,将 src 作为项目依赖项,它不起作用。

我试过了:

  • 包括本地logback.xml
  • 添加添加为 vm arg:-Dlogging.level.org.optaplanner=trace
  • 添加添加为 vm arg:-Dlog4j.configurationFile=C:\path\to\log4j2.xml
  • 设置环境变量LOGGING_CONFIG=C:\path\to\logback.xml
  • 使用Configurator 以编程方式设置级别

【问题讨论】:

  • 这里有些东西让我很困惑。你说你使用Log4J2。然而你为 Logback 提供配置?
  • @LukášPetrovicý 我认为 OptaPlanner 在内部使用了 Logback,所以我想看看是否可以获取配置。我仔细检查了一下,我弄错了。一切都通过 SLF4J(我相信你知道)。
  • 明确地说,我的项目有一个 Log4j2 配置,我自己有一个我使用的自定义配置。两者都没有被接走。

标签: logging log4j2 logback optaplanner


【解决方案1】:

OptaPlanner 仅将 Logback 作为测试范围内的依赖项。

要获取 OptaPlanner 的本地副本来获取您的日志配置,您需要(在本地)将您的日志记录依赖项添加到 OptaPlanner 构建路径。

对我来说,这意味着向 OptaPlanner pom.xml 添加 Log4j2 依赖项:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>pick.your.favorite</version>
    </dependency>

我还删除了作用域测试依赖项,以确保它不会搞砸任何事情。

我怀疑,对于那些不使用依赖管理工具的人,您可以手动将 JAR 添加到构建路径。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多