0

我在尝试使用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 格式。

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

4

2 回答 2

1

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

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

于 2009-02-13T16:22:06.083 回答
0

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

(注意额外的斜线)。

于 2010-07-13T01:12:23.963 回答