在Web服务上使用log4net

时间:2013-12-24 14:48:17

标签: c# web-services log4net syslog

我想编写一个能够将日志数据发送到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>

我不知道系统日志服务器在做什么,但是通过网络嗅探工具,我发现它没有来自514端口的数据包。

log.Info(msg, tempExt)函数的例外是

  

System.Exception:抛出了类型'System.Exception'的异常。

我无法通过网络服务将syslog数据发送到服务器。

1 个答案:

答案 0 :(得分:1)

可能不是问题,但我注意到在配置中你有错误的appender引用名称。我会评论这个而不是回答,但我没有要点:)