将ELMAH错误记录到Elasticsearch

时间:2019-05-03 11:22:10

标签: .net wcf elasticsearch elmah

如何添加目标以将日志发送到我的Elasticsearch服务器?理想情况下,我希望在WCF应用程序中有两个 errorLog ,其中一个向SQL发送数据,另一个向Elasticsearch发送数据。这是一个临时解决方案,直到我们关闭SQL端点。

这是我目前拥有的:

web.config

<elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ErrorLog"/>
    <errorLog type="My.Namespace.ElasticsearchErrorLog, My.Namespace" indexName="Elmah" />
    <security allowRemoteAccess="false"/>
</elmah>

ElasticsearchErrorLog.cs

public class ElasticsearchErrorLog : Elmah.ErrorLog
{
    public ElasticsearchErrorLog(IDictionary config)
    {
    }

    public override ErrorLogEntry GetError(string id)
    {
        throw new NotImplementedException();
    }

    public override int GetErrors(int pageIndex, int pageSize, IList errorEntryList)
    {
        throw new NotImplementedException();
    }

    public override string Log(Error error)
    {
        Logger.ElmahInstance.Error(error.Exception, "Something went wrong {Message} ...", error.Message);

        return Guid.NewGuid().ToString();
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

ELMAH不支持使用web.config写入多个错误日志。话虽这么说,但有一个小技巧可让您做到。我在这里使用它来登录到SQL Server和elmah.io,但是在您的情况下,方法将类似:

Logging to multiple ELMAH logs

对于您而言,您可以在ErrorLog_Logged方法内手动登录Elasticsearch。

答案 1 :(得分:0)

使用Nlog将您的日志存储到elasticsearch。请找到以下链接以供参考。

https://www.nuget.org/packages/NLog.Targets.ElasticSearch/

让我知道您是否仍然遇到任何问题。