package jalview.gui; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import org.apache.log4j.WriterAppender; import org.apache.log4j.spi.LoggingEvent; /** * From http://textareaappender.zcage.com/ * the means to capture the logs, too. * Simple example of creating a Log4j appender that will * write to a JTextArea. */ public class JalviewAppender extends WriterAppender { static private JTextArea jTextArea = null; /** Set the target JTextArea for the logging information to appear. */ static public void setTextArea(JTextArea jTextArea) { JalviewAppender.jTextArea = jTextArea; } /** * Format and then append the loggingEvent to the stored * JTextArea. */ public void append(LoggingEvent loggingEvent) { final String message = this.layout.format(loggingEvent); // Append formatted message to textarea using the Swing Thread. SwingUtilities.invokeLater(new Runnable() { public void run() { if (jTextArea!=null) { jTextArea.append(message); } } }); } }