簡體   English   中英

Java Logger無法登錄到控制台

[英]Java Logger doesn't log to Console

我已經創建了以下課程。

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

我的問題是,沒有任何內容打印到控制台上。.ive主要嘗試使用處理程序和關卡...當然,正常的System.out.println可以正常工作。 我已經將該類創建為整個類的多線程應用程序記錄器。 有什么建議么? 謝謝。

general ,這

if (_isInited)
    init();

應該

if (!_isInited)
    init();

否則,當isInitedfalse時,它將不會調用init() 或者,您可以使用static初始化塊,例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM