public synchronized void publish(LogRecord record) {
    if (this.isLoggable(record)) {
      // Log it before checking the condition
      super.publish(record);

      // Dump buffered records
      push();

      String _content = this.getFormatter().format(record);

      if (this._editorPane.getText().length() > this._maxSize) {
        this._editorPane.setText("");
      }

      Document _doc = this._editorPane.getDocument();
      try {
        this._editorPane.getEditorKit().read(new java.io.StringReader(_content), _doc, _doc.getLength());
        this._editorPane.setCaretPosition(_doc.getLength());
      } catch (Exception ex) {
        // Cannot log the message => print the error to System.out
        System.out.println("UIEditorPaneHandler::Error while updating Log EditorPane: " + ex.getMessage());
      }

      // Scroll to bottom
      // Not needed... the scroll pane has a ChangeEvent() listener
//      this._editorPane.setSelectionStart(this._editorPane.getText().length());
//      this._editorPane.setSelectionEnd(this._editorPane.getText().length());
//      this._editorPane.scrollRectToVisible(new Rectangle(0,this._editorPane.getBounds(null).height,1,1));
    }
  }