【问题标题】:logback.xml and running application from JetBrains IDEA IDElogback.xml 和从 JetBrains IDEA IDE 运行的应用程序
【发布时间】:2021-02-25 08:09:30
【问题描述】:

当我在 IDEA 中开发应用程序时,我应该将 logback.xml 放在哪里才能对应用程序产生影响?

似乎当您运行/调试时,IDEA 不会制作任何 jar,也不会调用 Maven 来构建某些东西。它是否直接从编译的 *.class 文件执行 main() ?如果是这样,我可以将 logback.xml 放在哪里才能生效?

【问题讨论】:

    标签: intellij-idea logback


    【解决方案1】:

    logback.xml 应该在 CLASSPATH 的根目录中可用。当你运行你的应用程序时,完整的 CLASSPATH 会在一开始就打印出来。当我将logback.xml 放入/src/main/resources(Maven 项目)时,它可以正常工作。还把它放在/src/test/resourceslogback-test.xml 名称中。

    简单运行:

    getClass().getClassLoader().getResource("/logback.xml");
    

    并查看它是否返回某些内容或null

    如果您不使用 Maven 项目,请打开 项目结构 (Ctrl + Alt + Shift + S)并添加到 Modules 部分,选择包含 logback.xml 的文件夹并将其标记为 Sources(蓝色图标)。

    【讨论】:

    • 非常感谢!有没有办法让 Maven 将 logback.xml 放在 jar 旁边,而不是在里面?
    • 默认情况下,如果您将任何文件放在与 JAR 相同的目录中,则不会将其提升到 CLASSPATH,因此 Logback 不会在那里看到logback.xml。但可以肯定的是,只是不要将它放在/src/main/resources 中(并在你想要的地方手动复制它)。如果你想让logback.xml 外部能够快速更改配置,Logback 支持开箱即用地读取环境属性以及其他可能性。
    • 感谢它让我登录到 Postgres!在我终于弄清楚我的文件被命名为 backlog.xml 而不是 logback.xml 哈哈!
    • @tomasz:我想从外部文件夹加载 logback.xml。这个 logback.xml 对于在 tomcat6 和 weblogic10 上运行的两个不同项目是通用的。你能建议我怎么做。在网上徘徊但没有找到任何有用的解决方案:(
    • 虽然这个回复对 Sai 来说太晚了,但您可以将 logback.xml 路径指定为命令行参数:-Dlogback.configurationFile=/path/to/config.xml
    【解决方案2】:

    对我来说:我只需要重新构建项目(不仅仅是重新运行或重新编译项目)。更改 src\main\resources\logback.xml 不会影响 logback,因为类加载器正在获取 target/ 文件夹中的 logback.xml,而不是 /src 文件夹。这是有道理的,因为目标是运行环境。因此,需要构建以将新的 xml 文件传输到目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-09
      • 2012-12-22
      • 2022-11-23
      • 2019-11-03
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      相关资源
      最近更新 更多