Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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
Java Logger不会将任何内容打印到控制台_Java_Logging - Fatal编程技术网

Java Logger不会将任何内容打印到控制台

Java Logger不会将任何内容打印到控制台,java,logging,Java,Logging,我刚刚开始学习Java中的Logger;然而,我不明白它是如何工作的 在我的类声明之后,我有以下代码: private static final Logger LOGGER = Logger.getLogger(MyClass.class.getName()); 然后在我的方法中,我像这样使用它(示例): 但控制台上没有打印任何内容。它是保存在某个文件中还是我只是使用不正确 我正在使用EclipseMars2和Java1.6.0ã22,如果它有区别的话 EDIT:我正在使用java.util.

我刚刚开始学习Java中的Logger;然而,我不明白它是如何工作的

在我的类声明之后,我有以下代码:

private static final Logger LOGGER = Logger.getLogger(MyClass.class.getName());
然后在我的方法中,我像这样使用它(示例):

但控制台上没有打印任何内容。它是保存在某个文件中还是我只是使用不正确

我正在使用EclipseMars2和Java1.6.0ã22,如果它有区别的话


EDIT:我正在使用
java.util.logging.Logger
库。

我的假设是您正在使用Log4J。如果这是正确的,那么记录器在默认情况下应该保存到一个文件,而不是打印到控制台(这通常是通过System.out.println(“消息”)完成的)。您有log4j.properties文件吗?

在一个全新的Eclipse项目中,这似乎对我很有用

import java.util.logging.Logger;

public class Foobar {

    public static final Logger LOGGER = Logger.getLogger(Foobar.class.getName());;

    public Foobar() {
        LOGGER.info("Constructed");
    }

    public static void main(String[] args) {
        new Foobar();
    }
}

您应该知道,
java.util.Logging
由JRE/lib文件夹中名为
Logging.properties
的根记录器文件控制,该文件默认为Level.INFO,因此默认情况下不会显示Fine消息,因为Fine低于INFO

 private static final Logger LOGGER = Logger.getLogger(MyClass.class.getName());

 Handler handlerObj = new ConsoleHandler();
 handlerObj.setLevel(Level.ALL);
 LOGGER.addHandler(handlerObj);
 LOGGER.setLevel(Level.ALL);
 LOGGER.setUseParentHandlers(false);
现在可以很好地使用LOGGER对象了,应该可以正常工作了。结帐

请记住,将日志级别设置为“精细”是有原因的,因此,降低日志级别还可能打印核心库中不必要的信息。如果有帮助,请告诉我


关于Douglas,将不显示任何内容,因为没有名为MyClass.class.getName()的处理程序连接到记录器

但是,父记录器实例中默认有一个处理程序。此处理程序是具有日志级别信息的ConsoleHandler

很容易验证:

public class StackAnswerAboutLogger {

private static final Logger LOGGER = Logger.getLogger(StackAnswerAboutLogger.class.getName());
private static final Logger PARENT_LOGGER = Logger.getLogger("");

public static void main(String[] args) {
    LOGGER.info("Count of LOGGER handlers: " + Integer.toString(LOGGER.getHandlers().length));
    LOGGER.info("Count of PARENT_LOGGER handlers: " + Integer.toString(LOGGER.getHandlers().length));
    Handler defaultConsoleHandler = PARENT_LOGGER.getHandlers()[0];
    LOGGER.info("Default Console Handler Log Level: " + defaultConsoleHandler.getLevel().toString());
  }

}
输出:

Jan 10, 2020 10:23:53 PM init.StackAnswerAboutLogger main
INFO: Count of LOGGER handlers: 0
Jan 10, 2020 10:23:54 PM init.StackAnswerAboutLogger main
INFO: Count of PARENT_LOGGER handlers: 0
Jan 10, 2020 10:23:54 PM init.StackAnswerAboutLogger main
INFO: Default Console Handler Log Level: INFO
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
INFO: Default log level of PARENT_LOGGER: INFO
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
INFO: Default Console Handler Log Level: INFO
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
FINEST: here is finest log
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
SEVERE: here is severe log
要以任何级别显示日志,可以配置父日志记录器处理程序或日志记录器处理程序

Handler defaultConsoleHandler = PARENT_LOGGER.getHandlers()[0];
LOGGER.info("Default log level of PARENT_LOGGER: " +PARENT_LOGGER.getLevel().toString());
LOGGER.info("Default Console Handler Log Level: "+defaultConsoleHandler.getLevel().toString());
defaultConsoleHandler.setLevel(Level.ALL);
PARENT_LOGGER.setLevel(Level.ALL);
LOGGER.log(Level.FINEST, "here is finest log");
LOGGER.log(Level.SEVERE, "here is severe log"); 
输出:

Jan 10, 2020 10:23:53 PM init.StackAnswerAboutLogger main
INFO: Count of LOGGER handlers: 0
Jan 10, 2020 10:23:54 PM init.StackAnswerAboutLogger main
INFO: Count of PARENT_LOGGER handlers: 0
Jan 10, 2020 10:23:54 PM init.StackAnswerAboutLogger main
INFO: Default Console Handler Log Level: INFO
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
INFO: Default log level of PARENT_LOGGER: INFO
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
INFO: Default Console Handler Log Level: INFO
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
FINEST: here is finest log
Jan 10, 2020 10:38:10 PM init.StackAnswerAboutLogger main
SEVERE: here is severe log

将库添加到OP中。您是否尝试在Eclipse中刷新projectexplorer以查看是否生成了任何文件;甚至关闭Eclipse并重新打开。没有新文件。是否尝试调用LOGGER.getHandlers()并检查分配给记录器的处理程序列表?可能未分配控制台处理程序?不,而是检入调试器处理程序实例的类。您还可以通过调用LOGGER.addHandler(new ConsoleHandler())尝试添加处理程序。尝试使用LOGGER.setLevel(Level.ALL),可能日志记录已关闭。我没有使用Log4J。在编辑中将库添加到OP中。对不起,我的课也是这样写的。谢谢你的帮助,我必须为它添加处理程序才能工作。谢谢!这真的很有帮助!我将从概述中查看更多内容。