无法改变netbeans日志记录级别

时间:2012-11-13 14:18:25

标签: java macos logging netbeans netbeans-7

这不应该那么复杂......改变netbeans默认的日志记录级别。

尽管英语不是我的主要语言,但直到现在,我认为我对它有很好的理解。我读过的每篇文章都说明了这一点简单易行......但我无法改变它。默认情况下,我的netbeans开始在INFO级别进行日志记录。我正试图将它降低到最佳状态。

我做了一个小POC,启动了一个全新的Java应用程序:

package javaapplication16;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class JavaApplication16 {

    private static final Logger logger = Logger.getLogger(JavaApplication16.class.getName());

    public static void main(String[] args) {        
        logger.log(Level.INFO, "hello!");
    }
}

工作正常。 “你好!”在netbeans输出窗口中打印。它也适用于更高级别(警告,严重)。

但是,如果我将其更改为FINE(或任何其他较低级别)。它不起作用。

我做了我在互联网上找到的所有内容。

我将main更改为

System.setProperty("javaapplication16.level", "100");
System.setProperty("javaapplication16.JavaApplication16", "100");
System.setProperty("java.util.logging.ConsoleHandler.level", "100");
try {
    LogManager.getLogManager().readConfiguration();
} catch (IOException | SecurityException ex) {
    logger.log(Level.SEVERE, null, ex);
}

logger.log(Level.FINE, "hello!");

更改了netbeans.conf并添加了-J-Djavaapplication16.level=100(和其他人)。在应用程序根级别创建了 logging.properties 等等......无论是单独使用还是组合使用都没有。

拜托,你能帮助我,指出我做错了吗?

我的环境是:

Product Version: NetBeans IDE 7.2 (Build 201207171143)
Java: 1.7.0_07; Java HotSpot(TM) 64-Bit Server VM 23.3-b01
System: Mac OS X version 10.8.2 running on x86_64; US-ASCII; en_US (nb)

我发现有用的帖子,但对我没用:

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题...... 我的解决方案(最后)是创建一个日志配置文件:

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL

并将其设置为项目运行选项:

>Project
>Properties
>Run
>VM Options: -Djava.util.logging.config.file=/home/myuser/logging.properties

请注意属性文件的绝对路径,因为我无法从正在运行的类路径中加载它(尝试过默认项目文件夹,默认打包,在包中...而且没有),也许这就发生了正在尝试加载属性文件,因为有时很难正确确定当前类路径的位置。 我以this thread为基础寻求解决方案。 Netbeans版本7.2和JDK jdk1.7.0_21。

答案 1 :(得分:0)

 System.setProperty("java.util.logging.ConsoleHandler.level", "FINER");

您需要使用表示级别的字符串,而不是它们的数字等价物。使用JUL从工作代码中复制粘贴该行。我发现log4j是一个更好的Java登录框架。

答案 2 :(得分:0)

ConsoleHandler也有一个级别,所以我分配了一个新的ConsoleHandler和 将Logger和ConsoleHandler都设置为所需的级别。那很有效!

    private static final Logger myLogger=Logger.getLogger(OrderApiClientJersey2_51_1.class.getName());
    static
    {
        // Default consoleHandler and Logger only log at INFO level
        Handler consoleHandler = new ConsoleHandler();  
        consoleHandler.setLevel(Level.ALL);
        myLogger.setLevel(Level.ALL);
        myLogger.addHandler(consoleHandler);
        myLogger.log(Level.FINEST, "Test Output");
    }