package org.infosec.ismp.manager.syslog;
import org.infosec.ismp.model.syslog.RawSyslog;
import org.infosec.ismp.util.ThreadCategory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 负责将收集到原始Syslog报文调用相应的处理器,处理成标准Syslog报文, 然后将各种标准Syslog报文调用专用处理器,生成对应的报文
*
* @author lianglin
*
*/
@Component
public class SyslogManager {
private SyslogLocator m_syslogLocator;
private SyslogProcessorManager m_spManager;
@Autowired(required = true)
public void setSyslogLocator(SyslogLocator syslogLocator) {
m_syslogLocator = syslogLocator;
}
@Autowired(required = true)
public void setSpManager(SyslogProcessorManager spManager) {
m_spManager = spManager;
}
public void addRawSyslog(RawSyslog rawSyslog) {
String domain = m_syslogLocator.getSyslogDomain(rawSyslog.getNodeid());
if (domain != null) {
String fromIp = rawSyslog.getIpaddr();
boolean flag = m_syslogLocator.existSyslogType(fromIp);
if (flag) {// 找到对应类型
String type = m_syslogLocator.getSyslogType(fromIp);
m_spManager.processSyslog(rawSyslog, type,domain);
} else {// 没有找到对应类型
m_spManager.processSyslog(rawSyslog,domain);
}
}
else{
log().warn("该日志对应的域没有找到,该日志的nodeid是:"+rawSyslog.getNodeid());
}
}
ThreadCategory log(){
return ThreadCategory.getInstance(getClass());
}
}