【问题标题】:Impossible to change netbeans logging level无法更改 netbeans 日志记录级别
【发布时间】:2012-11-01 23:25:27
【问题描述】:

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

尽管英语不是我的主要语言,但直到现在,我认为我对它有很好的理解。我读过的每一篇文章都说很容易改变它……但我无法改变它。默认情况下,我的 netbeans 开始在 INFO 级别记录。我正在尝试将其降低到 FINEST。

我做了一个小型 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)

我发现有用但对我无效的帖子:

【问题讨论】:

  • 你有没有想过这个问题?我也无法弄清楚如何更改 NetBeans 中的日志记录级别。应该是一件简单的事情,没有人知道怎么做。
  • @10flow 不幸的是没有。我离开了我工作的公司,在新公司,他们使用另一个 IDE。

标签: java macos logging netbeans netbeans-7


【解决方案1】:

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

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。

【讨论】:

    【解决方案2】:
     System.setProperty("java.util.logging.ConsoleHandler.level", "FINER");
    

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

    【讨论】:

    • 感谢您的回复,但没有成功。它们都不是:全部、最好或更好。
    【解决方案3】:

    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");
        }
    

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 2014-09-01
      • 2023-04-11
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2018-06-15
      • 2014-08-21
      • 1970-01-01
      相关资源
      最近更新 更多