Всем привет! пытаюсь сделать свой хендлер для лога. хочу, чтобы некоторые сообщения выводились не в файл, а в сообщении во фрейме. сделал класс 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)); , но при этом упорно пишет лог в консоль. кто может подсказать, что я неправильно сделал? |