Java Logger不';t登录到控制台

Java Logger不';t登录到控制台,java,logging,Java,Logging,我已经为下面的类创建了一个 package bgu.spl.utils; import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class AppLogger { private final static Logger _logg

我已经为下面的类创建了一个

package bgu.spl.utils;

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

public class AppLogger 
{
    private final static Logger _logger = Logger.getLogger("MyAppLogger");
    private static boolean _isInited = false;

    private synchronized static void init()
    {
        _logger.setLevel(Level.ALL);
        ConsoleHandler handler = new ConsoleHandler();
        handler.setFormatter(new SimpleFormatter());
        handler.setLevel(Level.ALL);
        _logger.addHandler(handler);

        _isInited = true;
    }

    public synchronized static void general (String text)
    {
        if (_isInited)
            init();

        System.out.println(text);
    }

    private static String tickStr(int tick)
    {
        return tick < 0 ? "" : (" - Tick: " + tick);
    }

    public synchronized static void severe (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();


        _logger.severe(type.getName() + tickStr(tick) + ". " + text);
    }

    public synchronized static void warning (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();

        _logger.warning(type.getName() + tickStr(tick) + ". " + text);
    }

    public synchronized static void info (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();

        _logger.info(type.getName() + tickStr(tick) + ". " + text);
    }

    public synchronized static void config (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();

        _logger.config(type.getName() + tickStr(tick) + ". " + text);
    }

    public synchronized static void fine (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();

        _logger.fine(type.getName() + tickStr(tick) + ". " + text);
    }

    public synchronized static void finer (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();

        _logger.finer(type.getName() + tickStr(tick) + ". " + text);
    }

    public synchronized static void finest (Class<?> type, String text, int tick)
    {
        if (_isInited)
            init();

        _logger.finest(type.getName() + tickStr(tick) + ". " + text);
    }
}
包bgu.spl.utils;
导入java.util.logging.ConsoleHandler;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入java.util.logging.SimpleFormatter;
公共类应用程序记录器
{
私有最终静态记录器_Logger=Logger.getLogger(“MyAppLogger”);
私有静态布尔值_isInited=false;
私有同步静态void init()
{
_logger.setLevel(Level.ALL);
ConsoleHandler handler=新的ConsoleHandler();
setFormatter(新的SimpleFormatter());
handler.setLevel(Level.ALL);
_addHandler(handler);
_isInited=真;
}
公共同步静态void常规(字符串文本)
{
如果(被监视)
init();
System.out.println(文本);
}
私有静态字符串tickStr(int tick)
{
返回勾号<0?”:(“-勾号:+勾号);
}
公共同步静态无效严重(类类型、字符串文本、整数勾号)
{
如果(被监视)
init();
_logger.severy(type.getName()+tickStr(tick)+“+”文本);
}
公共同步静态无效警告(类类型、字符串文本、整数勾号)
{
如果(被监视)
init();
_logger.warning(type.getName()+tickStr(tick)+“+”文本);
}
公共同步静态无效信息(类类型、字符串文本、整数勾号)
{
如果(被监视)
init();
_logger.info(type.getName()+tickStr(tick)+“+”文本);
}
公共同步静态void配置(类类型、字符串文本、整数勾号)
{
如果(被监视)
init();
_logger.config(type.getName()+tickStr(tick)+“+”文本);
}
公共同步静态void fine(类类型、字符串文本、整型记号)
{
如果(被监视)
init();
_logger.fine(type.getName()+tickStr(tick)+“+”文本);
}
公共同步静态void finer(类类型、字符串文本、整型记号)
{
如果(被监视)
init();
_logger.finer(type.getName()+tickStr(tick)+“+”文本);
}
公共同步静态无效(类类型、字符串文本、整型标记)
{
如果(被监视)
init();
_logger.finest(type.getName()+tickStr(tick)+“+”文本);
}
}
我的问题是,没有任何东西被打印到控制台上..我主要是尝试使用处理程序和关卡。。。 当然,正常的
系统.out.println
工作正常。 我创建了这个类作为我的整个应用程序的多线程应用程序记录器。 有什么建议吗?
谢谢。

概述

if (_isInited)
    init();
应该是

if (!_isInited)
    init();
否则,当
isInited
false
时,它不会调用
init()。或者,您可以使用
静态
初始化块,如

static {
    init(); // <-- will run once.
}
静态{
init()//