4

这不应该那么复杂...更改 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(或任何其他较低级别)。它没有用。

我做了我在互联网上找到的一切。

我将主要更改为

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)

我发现有用但对我不起作用的帖子:

4

3 回答 3

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

请注意属性文件的绝对路径,因为我无法从正在运行的类路径中加载它(尝试了默认项目文件夹,默认打包,在包内......什么都没有),也许当你试图加载属性文件,因为有时很难正确确定当前类路径的位置。我基于这个线程来寻找解决方案。Netbeans 版本 7.2 和 JDK jdk1.7.0_21。

于 2014-07-19T00:01:55.697 回答
0
 System.setProperty("java.util.logging.ConsoleHandler.level", "FINER");

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

于 2012-11-13T14:26:54.083 回答
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");
    }
于 2017-04-12T19:43:42.837 回答