package se.cambio.cds.util; import javax.swing.SwingUtilities; import org.apache.log4j.Appender; import org.apache.log4j.Layout; import org.apache.log4j.SimpleLayout; import org.apache.log4j.spi.ErrorHandler; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; import se.cambio.openehr.util.exceptions.InternalErrorException; public class RemoteLoggerAppender implements Appender{ private Layout _layout = null; @Override public void addFilter(Filter newFilter) { // TODO Auto-generated method stub } @Override public Filter getFilter() { // TODO Auto-generated method stub return null; } @Override public void clearFilters() { // TODO Auto-generated method stub } @Override public void close() { // TODO Auto-generated method stub } @Override public void doAppend(LoggingEvent event) { String msg = getLayout().format(event); if (msg!=null){ SwingUtilities.invokeLater(new SendEventRunnable(msg)); }else{ System.out.println(new SimpleLayout().format(event)); } } private class SendEventRunnable implements Runnable{ private String _msg = null; public SendEventRunnable(String msg){ _msg = msg; } @Override public void run() { try { SimpleHttpTransport.send(_msg); } catch (InternalErrorException e) { e.printStackTrace(); } } } @Override public String getName() { return "RemoteLoggerAppender"; } @Override public void setErrorHandler(ErrorHandler errorHandler) { // TODO Auto-generated method stub } @Override public ErrorHandler getErrorHandler() { // TODO Auto-generated method stub return null; } @Override public void setLayout(Layout layout) { _layout = layout; } @Override public Layout getLayout() { if (_layout==null){ _layout = new LogEventJSONLayout(); } return _layout; } @Override public void setName(String name) { // TODO Auto-generated method stub } @Override public boolean requiresLayout() { // TODO Auto-generated method stub return false; } }