【问题标题】:Java logging configuration only partially taken into account仅部分考虑了 Java 日志记录配置
【发布时间】:2009-02-13 16:04:07
【问题描述】:

我在尝试使用 one-jar 打包程序来简化部署过程来交付项目时遇到问题。
没有打包,一切正常,日志配置完美加载,但在打包中,只应用了部分配置。

所以,这里是我使用的 logging.properties:

handlers= java.util.logging.ConsoleHandler, java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = C:\\MyPath\\logging.csv
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = my.package.logging.Formatter
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = my.package.logging.Formatter

在我的主类中,这是我加载它的方式:

public class MainClass {
  public static void main(final String[] args) {
    try {
      LogManager.getLogManager().readConfiguration(
        new MainClass().getClass().getResourceAsStream("logging.properties"));
      // main process goes here.
    } catch(Exception e) {
      // Exception handling
    }
  }
}

日志级别和 FileHandler 模式很好理解,因为日志记录最终在正确的文件中,但作为行 XML 输出,这让我认为格式化程序没有加载,因为它通常输出 CSV 格式。

这可能与类路径问题有关吗?有谁知道如何处理这个问题?

【问题讨论】:

    标签: java logging classpath classloader


    【解决方案1】:

    您的 jar 中可能有多个 logging.properties 文件,它们的设置相似但略有不同。当您将它们与一个罐子组合在一起时,顺序会发生变化,其中一个会被隐藏。执行“jar -tf *.jar |grep logging.properties”,看看你看到了什么。

    如果这不起作用,您可以尝试将 onejar 结果解压缩到目录结构中,然后使用类路径上的目录而不是 jar 运行吗?这将让您查看它是否与 jar 相关,并实际检查您在 onejar 中的 logging.properties,看看它是否符合您的预期。

    【讨论】:

    • 不错的尝试,但这是我唯一的“logging.properties”。
    • 好的。当我的一个第三方罐子有一个我没有意识到的 logging.properties 时,我曾经有过这个。下一个建议 - 添加为编辑 ...
    【解决方案2】:

    使用LogManager.getLogManager().readConfiguration(LogManager.class.getResourceAsStream("/logging.debug.properties"));

    (注意多余的斜线)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2018-07-02
      相关资源
      最近更新 更多