Регистрация ошибок ELMAH в Elasticsearch - PullRequest
0 голосов
/ 03 мая 2019

Как добавить цель для отправки журналов на мой сервер Elasticsearch? В идеале я хотел бы иметь два errorLog в моем приложении WCF, где один отправляет данные в 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 голосов
/ 07 мая 2019

Используйте Nlog для хранения ваших логов вasticsearch.Пожалуйста, найдите ссылку ниже.

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

Дайте мне знать, если у вас все еще есть какие-либо проблемы.

0 голосов
/ 03 мая 2019

ELMAH не поддерживает запись в несколько журналов ошибок с использованием web.config.С учетом сказанного, есть небольшой взлом, который позволяет вам сделать это.Я использую его здесь для входа в SQL Server и elmah.io , но в вашем случае подход будет аналогичным:

Регистрация в нескольких журналах ELMAH

В вашем случае вы можете войти в Elasticsearch вручную в методе ErrorLog_Logged.

...