在jar文件中使用java.util.logging.Logger,该文件将在Android中的LogCat中显示

时间:2014-07-09 08:34:41

标签: java android logging java.util.logging

Android Studio 0.8.1
java version "1.7.0_60"

您好,

我已经创建了一个jar文件并从我的Android应用程序中调用它。为了测试目的,我想在jar文件中放入一些日志,这些日志将显示在LogCat窗口中。

我决定使用Java的java.util.logging.Logger课程。但是,当我使用No Filter运行我的应用程序时,我看不到任何正在显示的日志消息。

import java.util.logging.ConsoleHandler;
import java.util.logging.SimpleFormatter;
import java.util.logging.Handler;
import java.util.logging.Logger;
import java.util.logging.Level;

public class RequestFactory extends WebServiceRequestFactory {
    private static final Logger log = Logger.getLogger("RequestFactory");

    public RequestFactory() {
        ConsoleHandler consoleHandler = new ConsoleHandler();
        log.addHandler(consoleHandler);
        consoleHandler.setFormatter(new SimpleFormatter());

        log.log(Level.FINE, "LOG: Initialized overloaded constructor");
        System.out.println("Initialized overloaded constructor");
    }
    .....

我已将上述内容设置为在控制台中显示。但是,System.out.println始终打印出来。但是,我不想使用System.out.println来显示日志消息。

如果可能的话,我想坚持使用java的日志记录类。

在LogCat窗口中,我可以看到System.out.println(...),但不能看到log.log(...)窗口:

I/System.out﹕ Initialized overloaded constructor

我在这里做错了吗?

非常感谢任何建议

1 个答案:

答案 0 :(得分:2)

ConsoleHandler的默认级别为INFO。 logger的默认级别是从其父级继承的。默认情况下,根记录器通常设置为INFO。使用默认设置不会报告FINE日志消息。将ConsoleHandler的日志级别更改为ALL,并将记录器的级别更改为FINE。

log.setLevel(Level.FINE);
consoleHandler.setLevel(Level.ALL);