【问题标题】:Logging ELMAH errors to Elasticsearch将 ELMAH 错误记录到 Elasticsearch
【发布时间】:2019-09-21 22:36:40
【问题描述】:

如何添加目标以将日志发送到我的 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();
    }
}

有什么想法吗?

【问题讨论】:

    标签: .net wcf elasticsearch elmah


    【解决方案1】:

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

    Logging to multiple ELMAH logs

    在您的情况下,您可以在 ErrorLog_Logged 方法中手动登录到 Elasticsearch。

    【讨论】:

      【解决方案2】:

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

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

      如果您仍然遇到任何问题,请告诉我。

      【讨论】:

        猜你喜欢
        • 2011-03-01
        • 2012-03-04
        • 2013-06-12
        • 1970-01-01
        • 2023-03-30
        • 2018-03-20
        • 1970-01-01
        • 1970-01-01
        • 2011-10-05
        相关资源
        最近更新 更多