我想编写一个能够将日志数据发送到syslog服务器的web服务。
建筑是这样的:
Client ---> Webservice ----> syslog server客户端调用web服务的方式如下:
ServiceReference1.SysLogServiceClient clt = new ServiceReference1.SysLogServiceClient();
ServiceReference1.ClsSysLog temp = new ServiceReference1.ClsSysLog();
temp.date= DateTime.Now;
temp.time = DateTime.Now;
temp.processtype= "test";
temp.user= "testuser";
temp.application = "testapp";
bool result = clt.SendSysLog(temp);Web服务有一个类和一个函数:
类:
[DataContract]
public class ClsSysLog
{
[DataMember]
public DateTime date{ get; set; }
[DataMember]
public DateTime time { get; set; }
[DataMember]
public string processtype { get; set; }
[DataMember]
public string user { get; set; }
[DataMember]
public string application { get; set; }
}功能:
private static readonly ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public bool SendSysLog(ClsSysLog SysLogItem)
{
try
{
//date|time|processtype|user|application
string msg = String.Format("{0:yyyy-MM-dd}|{1:HH:mm:ss}|{2}|{3}|{4}|{5}|{6}", SysLogItem.date, SysLogItem.time, SysLogItem.processtype, SysLogItem.user, SysLogItem.application);
Exception tempExt = new Exception();
log.Info(msg, tempExt);
return true;
}
catch (Exception ex)
{
return false;
}
}最后,web服务配置是:
<log4net>
<appender name="RemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
<facility value="qradar" />
<identity value=" %date{yyyy-MM-ddTHH:mm:ss.ffffffzzz} %P{log4net:HostName} %P{app}" />
<RemoteAddress value="192.168.1.55" />
<layout type="log4net.Layout.PatternLayout" value=" %P{pid}:%logger %m%n" />
<RemotePort value="514" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RealtimeMonitoringAppender" />
</root>
</log4net>我不知道syslog服务器在做什么,但是通过网络嗅探工具,我发现它没有来自514端口的数据包。
log.Info(msg, tempExt)函数的异常是
System.Exception:抛出了“System.Exception”类型的异常。
我不能通过web服务将syslog数据发送到服务器。
发布于 2013-12-24 16:10:50
可能不是问题,但我注意到在配置中,您有错误的appender名称。我会评论这一点,而不是回答,但我没有要点:)
https://stackoverflow.com/questions/20762775
复制相似问题