仅部分考虑Java日志记录配置

仅部分考虑Java日志记录配置,java,logging,classpath,classloader,Java,Logging,Classpath,Classloader,我遇到了一个问题,我试图使用打包机交付一个项目,以简化部署过程。 没有打包,一切都可以正常工作,日志配置也可以完美加载,但在打包中,只应用了部分配置 下面是我使用的logging.properties: handlers= java.util.logging.ConsoleHandler, java.util.logging.FileHandler .level= INFO java.util.logging.FileHandler.pattern = C:\\MyPath\\logging.c

我遇到了一个问题,我试图使用打包机交付一个项目,以简化部署过程。
没有打包,一切都可以正常工作,日志配置也可以完美加载,但在打包中,只应用了部分配置

下面是我使用的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格式


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

可能是在您的JAR中,您有多个logging.properties文件,具有类似但略有不同的设置。当你把它们和一个罐子组合在一起时,顺序改变了,其中一个被隐藏了。做一个“jar-tf*.jar | grep logging.properties”,看看你看到了什么


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

使用
LogManager.getLogManager().readConfiguration(LogManager.class.getResourceAsStream(“/logging.debug.properties”)


(请注意额外的斜杠)。

这是一个不错的尝试,但这是我仅有的“logging.properties”。好的。我以前有过这种情况,当时我的一个第三方jar中有一个logging.properties,我没有意识到。下一个建议-添加为编辑。。。