Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解测井_Java_Logging_Java.util.logging - Fatal编程技术网

Java 理解测井

Java 理解测井,java,logging,java.util.logging,Java,Logging,Java.util.logging,我有一个关于java.util.logging的问题。这主要是为了理解它,因为我已经让它工作了。但我仍然不太清楚它为什么会起作用 所以我有一个很大很老的应用程序,有很多线程,没有任何同步,这不是我发明的,我只是一个糟糕的维护者。我将专有日志移植到java.util.logging。启动时,我读取一个配置文件: String logname = Ini.getProperty("BoxLog", "boxlog.properties"); logManager = LogManag

我有一个关于java.util.logging的问题。这主要是为了理解它,因为我已经让它工作了。但我仍然不太清楚它为什么会起作用

所以我有一个很大很老的应用程序,有很多线程,没有任何同步,这不是我发明的,我只是一个糟糕的维护者。我将专有日志移植到java.util.logging。启动时,我读取一个配置文件:

    String logname = Ini.getProperty("BoxLog", "boxlog.properties");
    logManager = LogManager.getLogManager();                
    try {
        logManager.readConfiguration(new FileInputStream(logname));
        LOGGER.info("Read log configuration file " + logname);
    } catch (SecurityException e) { ... }
我用一个调试器处理了它,这里一切正常。没有例外,读取了正确的文件,一切似乎都正常。但是日志处理程序的格式没有更新。因此,这里的日志行以系统范围配置中默认的格式输出

由于线程很多,在另一个使用默认配置的对象中有一些日志输出,它们是在读取我的配置之前输出的。在我移除这些日志后,一切正常

文档中提到了readConfiguration:重新初始化日志属性并重新读取日志配置。所以我假设在这几行日志记录发生之后,在读取正确的配置之后,每一次进一步的日志记录都将采用给定的格式。但事实并非如此。任何类中的每一次进一步日志记录仍然是默认格式。在我看来,在读取配置时,任何已经实例化的记录器及其处理程序都没有重新初始化

这就是问题所在。这到底是怎么回事?我错过什么了吗?还是我错误地理解了这里的某些东西?或者文档中是否存在缺陷?或者别的什么

文档中提到了readConfiguration:重新初始化日志属性并重新读取日志配置。所以我假设在这几行日志记录发生之后,在读取正确的配置之后,每一次进一步的日志记录都将采用给定的格式

你正在跑向和

这在JDK9中通过添加

这将在中详细介绍

如果您没有访问JDK9的权限,那么您可以将该选项与java.util.logging.config.file选项一起使用,以创建自定义代码,从而绕过上面列出的缺陷限制

任何类中的每一次进一步日志记录仍然是默认格式


如果您使用的是SimpleFormat,则将在中介绍。

谢谢。这至少澄清了这一点:不幸的是,对于这个项目,我必须坚持使用Java7。但既然它现在起作用了。。。在读取配置之前,我必须注意不要实例化任何记录器。