Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

По умолчанию 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 не на HttpRuntime.AppDomainAppId, а вместо этого вывести значение из web.config. В общем, это возможно. То, как я это сделал, улучшил метод ErrorLog.Log(ex), чтобы я мог использовать Elmah, который может быть выведен из строя вне веб-приложений. Оглядываясь назад, я бы хотел, чтобы я использовал приложение /web.config.

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

Ответ 2

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

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

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

Источник

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