package org.infosec.ismp.syslogd; import java.lang.reflect.UndeclaredThrowableException; import org.infosec.ismp.daemon.AbstractServiceDaemon; import org.springframework.util.Assert; /** * syslog接受模块 */ public class Syslogd extends AbstractServiceDaemon { /** * The name of the logging category for Syslogd. */ static final String LOG4J_CATEGORY = "ISMP.Syslogd"; private SyslogHandler m_udpEventReceiver; public Syslogd() { super("ISMP.Syslogd"); } private int m_syslogPort; private SyslogNodeManager m_syslogNodeManager; @Override protected void onInit() { Assert.notNull(m_syslogPort, "m_syslogPort is null,please check"); Assert.notNull(m_syslogNodeManager, "m_syslogNodeManager is null,please check"); log().debug("start: Initializing the syslogd config factory"); // SyslogdParserMgrFactory.setSyslogdParserMgr(m_syslogdParserMgr); // SyslogHandler.setSyslogConfig(m_syslogdConfig); log().debug("Starting SyslogProcessor"); m_udpEventReceiver = new SyslogHandler(m_syslogPort, m_syslogNodeManager); } @Override protected void onStart() { m_udpEventReceiver.start(); try { BroadcastEventProcessor m_eventReader = new BroadcastEventProcessor(m_syslogNodeManager); } catch (Exception ex) { log().error("Failed to setup event reader", ex); throw new UndeclaredThrowableException(ex); } } @Override protected void onStop() { // shutdown and wait on the background processing thread to exit. log().debug("exit: closing communication paths."); try { log().debug("stop: Closing SYSLOGD message session."); log().debug("stop: Syslog message session closed."); } catch (IllegalStateException e) { log().debug("stop: The Syslog session was already closed"); } log().debug("stop: Stopping queue processor."); m_udpEventReceiver.stop(); log().debug("Stopped the Syslog UDP Receiver"); } public int getSyslogPort() { return m_syslogPort; } public void setSyslogPort(int syslogPort) { m_syslogPort = syslogPort; } public void setSyslogNodeManager(SyslogNodeManager syslogNodeManager) { m_syslogNodeManager = syslogNodeManager; } }