package com.log; import java.util.Date; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Layout; import org.apache.log4j.spi.LoggingEvent; import com.log.harvester.LogSender; public class LogAppender extends AppenderSkeleton { private String host; private String port; private String applicationId; private String type; private LogSender logSender; /** * Constructs an unconfigured appender. */ public LogAppender() { } /** * Creates a configured appender. * * @param layout * layout, may not be null. * */ public LogAppender(Layout layout, String host, String port, String applicationId) { setLayout(layout); setHost(host); setPort(port); setApplicationId(applicationId); activateOptions(); } @Override protected void append(LoggingEvent event) { String message = this.layout.format(event); if (layout.ignoresThrowable()) { String[] s = event.getThrowableStrRep(); if (s != null) { int len = s.length; for (int i = 0; i < len; i++) { message += s[i]; message += Layout.LINE_SEP; } } } if(type == null) { type = ""; } getLogSender().sendLog(new Date(), type, message, event.getLevel() .toString(), null); } public void close() { } public boolean requiresLayout() { return false; } public String getHost() { return host; } public String getPort() { return port; } public String getApplicationId() { return applicationId; } public void setHost(String host) { this.host = host; } public void setPort(String port) { this.port = port; } public void setApplicationId(String applicationId) { this.applicationId = applicationId; } protected LogSender getLogSender() { if(logSender == null ){ logSender = new LogSender(); logSender.setApplicationId(applicationId); logSender.setLoggingBoxPort(port); logSender.setLoggingBoxHost(host); logSender.start(); } return logSender; } public String getType() { return type; } public void setType(String type) { this.type = type; } }