как настроить Elmah.ErrorLogPage HttpHandler для отображения данных из нескольких приложений - PullRequest
0 голосов
/ 19 февраля 2020

Мы настроили Elmah для 3 asp. net mvc веб-сайтов и 3 windows сервисов, все записи в одну и ту же таблицу ElamhLog в одной базе данных. Все они имеют свое собственное значение для «приложения».

Чтобы ПОКАЗАТЬ ведение журнала, мы хотим сделать это с одного из 3 веб-сайтов, и на этой странице показать ведение журнала всех 6 приложений.

Я использовал этот (http://beletsky.net/2011/08/latest-version-of-elmah-mvc-controller.html) код, чтобы настроить страницу для отображения журнала.

 var currentApplication = (HttpApplication)context.HttpContext.GetService(typeof(HttpApplication));
if (currentApplication != null)
{
    var currentContext = currentApplication.Context;
    var httpHandler = factory.GetHandler(currentContext, null, null, null);
    if (httpHandler is IHttpAsyncHandler asyncHttpHandler)
    {
        asyncHttpHandler.BeginProcessRequest(currentContext, r => { }, null);
    }
    else
    {
        httpHandler?.ProcessRequest(currentContext);
    }
}

Это работает, но показывает только ошибки с этого 1 сайта, и не для других. Код, отвечающий за написание страницы ошибок, - Elmah.ErrorLogPage, и у него есть свойство, называемое «application», которое действительно имеет только имя этого 1 сайта, и я предполагаю, что оно использует это свойство, чтобы показывать только ошибки этого одного приложения. Он также доступен только для чтения, поэтому я не могу установить для него другие значения.

Однако есть ли способ показать ошибки всех приложений с помощью этого одного обработчика?

...