Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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.util.logging的全局日志级别设置的奇怪行为_Java_Maven_Logging - Fatal编程技术网

java.util.logging的全局日志级别设置的奇怪行为

java.util.logging的全局日志级别设置的奇怪行为,java,maven,logging,Java,Maven,Logging,我有一个非常简单的logging.propertiesconfig: handlers = java.util.logging.ConsoleHandler .level = INFO java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter java.util.logging.SimpleForma

我有一个非常简单的
logging.properties
config:

handlers = java.util.logging.ConsoleHandler
.level = INFO
java.util.logging.ConsoleHandler.level     = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=[%1$tF %1$tT] [%4$s] %5$s %n
如果
.level
设置为INFO,我将按预期获得所有信息和更高级别的消息。但是如果我将
.level
设置为FINE、FINER、FINEST或ALL。“我的代码”中没有显示任何消息(既没有警告也没有严重)。所有“内部”精细、精细等消息都会正确显示,但我的代码中的消息不会正确显示

我尝试为我的包添加特定级别:

org.example.mypackage.level = INFO
但这对这个问题没有影响。一旦全局
.level
设置为FINE、lower或ALL,则无论级别如何,都不会显示由我的代码生成的任何消息

这里怎么了?有没有这样的规定(我在网上没有找到任何东西)

我正在使用maven运行测试:

mvn测试-Djava.util.logging.config.file=/path/to/my/logging.properties

我生成日志消息的代码如下所示:

public class MyClass {
    private static final logger = Logger.getLogger(MyClass.class.getName());

    public void someMethod() {
        logger.log(Level.WARNING, "Warning message");
    }
}
更新:
这一定与maven有关。一旦应用程序自行编译和运行(纯java SE-没有应用程序服务器,没有容器),问题就不再是问题了。仅当使用
mvn…
运行时,日志记录的行为如上所述。

这与Maven无关。这很可能与
org.example.mypackage

将以下内容添加到单元测试代码的顶部:

private static final Object PINS = new Object[]{Logger.getLogger("org.example.mypackage")};
正如上面链接中所解释的,这将强制创建一个记录器,它现在是应用程序中所有子记录器的新父记录器。这允许
logging.properties
工作。当您运行完整的应用程序时,您可能已经有了创建这个包记录器的代码,这就是为什么它可以正常工作的原因