Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > хендлер для лога


Автор: susanin 30.3.2013, 03:14
Всем привет! пытаюсь сделать свой хендлер для лога. хочу, чтобы некоторые сообщения выводились не в файл, а в сообщении во фрейме. сделал класс LogMessageFrame
Код

public class LogMessageFrame extends StreamHandler {
    
    public LogMessageFrame(){
        super();
        window = new JFrame("Unexpected exception");
        panel = new JPanel();
        message = new JLabel();
        window.add(panel);
        panel.add(message);
        outErr = new OutputStream() {

            @Override
            public void write(int b) throws IOException {}
            
            @Override
            public void write(byte b[]) throws IOException {
                message.setText(new String(b));
                
            }
        };
        this.setOutputStream(outErr);
        this.setLevel(Level.ALL);
        window.setSize(200, 200);
        window.setVisible(true);
    }
    
    @Override
    public void publish (LogRecord record){
        if(!window.isVisible()) return;
        super.publish(record);
        flush();
    }
    
    private JFrame window;
    private JPanel panel;
    private JLabel message;
    private OutputStream outErr;
}

и потом пытаюсь в него что то залогировать
Код

try{
            throw new IOException(); //только в целях тестирования
        }
        catch(IOException ex){
            Logger myLogger = Logger.getLogger("my.custom.logger");
            myLogger.setUseParentHandlers(false);
            LogMessageFrame handler = new LogMessageFrame();
            myLogger.addHandler(handler);
            myLogger.log(new LogRecord(Level.SEVERE, "Error. "+ex.getMessage()));
        }

но на выходе ноль. в дебаге прога даже не заходит в кусок кода message.setText(new String(b)); , но при этом упорно пишет лог в консоль. кто может подсказать, что я неправильно сделал?

Автор: susanin 1.4.2013, 00:06
решено. нужно было для хендлера уровень логов задать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)