Есть ли какой-нибудь способ программно задать имя приложения в Elmah?

StackOverflow https://stackoverflow.com/questions/153054

  •  03-07-2019
  •  | 
  •  

Вопрос

Мне нужно изменить название приложения в зависимости от того, какую конфигурацию я использую в Visual Studio.Например, если я нахожусь в конфигурации отладки, я хочу, чтобы имя приложения отображалось как 'App_Debug' в поле Приложения в таблице Elmah_Error.Есть ли у кого-нибудь какой-нибудь опыт в этом?Или есть другой способ сделать это?

Это было полезно?

Решение

По умолчанию Elmah использует GUID приложения AppPool в качестве имени приложения по умолчанию.Он использует это как ключ для идентификации ошибок в таблице Elmah_Error, когда вы просматриваете веб-интерфейс, созданный с помощью его HTTP-модуля.

В начале этого года мне было поручено изучить этот вариант для моей компании.Я не смог найти способ манипулировать этим по умолчанию, поскольку Elmah извлекает имя приложения из HttpRuntime.AppDomainAppId в файле ErrorLog.cs.Вы можете манипулировать им с помощью любого ключа, который захотите;однако это GUID AppPool.

С учетом сказанного, я смог манипулировать файлом ErrorLog.cs, чтобы превратить Elmah в вызываемый фреймворк вместо фреймворка на основе обработчика и разрешить мне устанавливать ApplicationName.В итоге я изменил ErrorLog.cs, включив в него свойство, которое позволило мне задать имя, как показано ниже:

public virtual string ApplicationName
{
    get 
    {
        if (_applicationName == null) {  _applicationName = HttpRuntime.AppDomainAppId; }
        return _applicationName;
    }
    set { _applicationName = value; }
}

Что вам, вероятно, нужно будет сделать, так это настроить это по-другому и установить для ApplicationName значение not HttpRuntime.AppDomainAppId но, вместо этого, значение, извлеченное из web.config.В общем, это возможно.То, как я это сделал, усилило ErrorLog.Log(ex) метод, который я мог бы использовать, Elmah имеет вызываемую структуру, выходящую за рамки веб-приложений.Оглядываясь назад, я жалею, что вместо этого не использовал подход app / web.config.

Одна вещь, которую следует иметь в виду при изменении имени приложения в Elmah.HTTP-обработчик, который генерирует интерфейс /elmah/default.aspx, больше не будет работать.Я все еще пытаюсь найти время, чтобы вернуться к таким;однако при реализации вам, возможно, потребуется изучить возможность создания пользовательского интерфейса.

Другие советы

Теперь это можно сделать исключительно с помощью разметки.Просто добавьте applicationName атрибут для errorLog элемент в <elmah> раздел файла web.config.Пример:

<errorLog type="Elmah.SqlErrorLog, Elmah" 
    connectionStringName="connectionString" applicationName="myApp"  />

Я протестировал это, и это работает как при регистрации исключения, так и при просмотре журнала через Elmah.axd.

В случае с OP можно было бы предположить, что его тоже можно настроить программно, но я этого не тестировал.Для меня, и я полагаю, что для большинства сценариев подхода к разметке достаточно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top