package org.graylog2.syslog4j.impl.multiple; import java.util.Date; import org.graylog2.syslog4j.Syslog; import org.graylog2.syslog4j.SyslogConfigIF; import org.graylog2.syslog4j.SyslogConstants; import org.graylog2.syslog4j.SyslogIF; import org.graylog2.syslog4j.SyslogMessageIF; import org.graylog2.syslog4j.SyslogMessageProcessorIF; import org.graylog2.syslog4j.SyslogRuntimeException; /** * MultipleSyslog is an aggregator Syslog implementation for allowing a single * Syslog call to send to multiple Syslog implementations. * <p/> * <p>Syslog4j is licensed under the Lesser GNU Public License v2.1. A copy * of the LGPL license is available in the META-INF folder in all * distributions of Syslog4j and in the base directory of the "doc" ZIP.</p> * * @author <syslog4j@productivity.org> * @version $Id: MultipleSyslog.java,v 1.10 2010/02/11 05:00:55 cvs Exp $ */ public class MultipleSyslog implements SyslogIF { private static final long serialVersionUID = 587308197526365108L; protected String syslogProtocol = null; protected MultipleSyslogConfig multipleSyslogConfig = null; public void initialize(String protocol, SyslogConfigIF config) throws SyslogRuntimeException { this.syslogProtocol = protocol; try { this.multipleSyslogConfig = (MultipleSyslogConfig) config; } catch (ClassCastException cce) { throw new SyslogRuntimeException("config must be of type MultipleSyslogConfig"); } } public SyslogConfigIF getConfig() { return this.multipleSyslogConfig; } public void debug(String message) { log(SyslogConstants.LEVEL_DEBUG, message); } public void debug(SyslogMessageIF message) { log(SyslogConstants.LEVEL_DEBUG, message); } public void critical(String message) { log(SyslogConstants.LEVEL_CRITICAL, message); } public void critical(SyslogMessageIF message) { log(SyslogConstants.LEVEL_CRITICAL, message); } public void error(String message) { log(SyslogConstants.LEVEL_ERROR, message); } public void error(SyslogMessageIF message) { log(SyslogConstants.LEVEL_ERROR, message); } public void alert(String message) { log(SyslogConstants.LEVEL_ALERT, message); } public void alert(SyslogMessageIF message) { log(SyslogConstants.LEVEL_ALERT, message); } public void notice(String message) { log(SyslogConstants.LEVEL_NOTICE, message); } public void notice(SyslogMessageIF message) { log(SyslogConstants.LEVEL_NOTICE, message); } public void emergency(String message) { log(SyslogConstants.LEVEL_EMERGENCY, message); } public void emergency(SyslogMessageIF message) { log(SyslogConstants.LEVEL_EMERGENCY, message); } public void info(String message) { log(SyslogConstants.LEVEL_INFO, message); } public void info(SyslogMessageIF message) { log(SyslogConstants.LEVEL_INFO, message); } public void warn(String message) { log(SyslogConstants.LEVEL_WARN, message); } public void warn(SyslogMessageIF message) { log(SyslogConstants.LEVEL_WARN, message); } public void log(int level, String message) { for (int i = 0; i < this.multipleSyslogConfig.getProtocols().size(); i++) { String protocol = (String) this.multipleSyslogConfig.getProtocols().get(i); SyslogIF syslog = Syslog.getInstance(protocol); syslog.log(level, message); } } public void log(int level, SyslogMessageIF message) { for (int i = 0; i < this.multipleSyslogConfig.getProtocols().size(); i++) { String protocol = (String) this.multipleSyslogConfig.getProtocols().get(i); SyslogIF syslog = Syslog.getInstance(protocol); syslog.log(level, message); } } public void flush() throws SyslogRuntimeException { for (int i = 0; i < this.multipleSyslogConfig.getProtocols().size(); i++) { String protocol = (String) this.multipleSyslogConfig.getProtocols().get(i); SyslogIF syslog = Syslog.getInstance(protocol); syslog.flush(); } } public void shutdown() throws SyslogRuntimeException { for (int i = 0; i < this.multipleSyslogConfig.getProtocols().size(); i++) { String protocol = (String) this.multipleSyslogConfig.getProtocols().get(i); SyslogIF syslog = Syslog.getInstance(protocol); syslog.shutdown(); } } public void backLog(int level, String message, Throwable reasonThrowable) { // MultipleSyslog is an aggregator; backLog state will be handled by individual Syslog protocols } public void backLog(int level, String message, String reason) { // MultipleSyslog is an aggregator; backLog state will be handled by individual Syslog protocols } public void setMessageProcessor(SyslogMessageProcessorIF messageProcessor) { throw new SyslogRuntimeException("MultipleSyslog is an aggregator; please set the individual protocols"); } public SyslogMessageProcessorIF getMessageProcessor() { throw new SyslogRuntimeException("MultipleSyslog is an aggregator; please set the individual protocols"); } public void setStructuredMessageProcessor(SyslogMessageProcessorIF messageProcessor) { throw new SyslogRuntimeException("MultipleSyslog is an aggregator; please set the individual protocols"); } public SyslogMessageProcessorIF getStructuredMessageProcessor() { throw new SyslogRuntimeException("MultipleSyslog is an aggregator; please set the individual protocols"); } public String getProtocol() { return this.syslogProtocol; } public void log(int level, String message, Date datetime) { } public void log(int level, SyslogMessageIF message, Date datetime) { } }