Как Зарегистрировать Исключение в файле?

Я хочу смочь сделать вход в систему каждого блока выгоды. Что-то вроде этого.

catch (Exception exception)
{
  Logger.Write(exception);
}

и затем настройки в конфигурации заберут сообщение и свойство StackTrace и т.д. с помощью клиентского слушателя.

Я хотел бы пользоваться Библиотекой Предприятия, Регистрирующей Блок приложений. Я уверен, что кто-то уже, должно быть, сделал это.

13
задан IsmailS 16 June 2010 в 07:24
поделиться

3 ответа

Другие опубликовали несколько хороших ссылок о том, как заставить работать Logging Application Block (LAB), поэтому я не буду дублировать их здесь.

Что касается форматирования вашего исключения, у вас есть 3 варианта, которые я могу придумать:

  1. Используйте реализацию по умолчанию Exception.ToString () (это неплохо)
  2. Напишите пользовательский форматировщик, который интегрируется в LAB.
  3. Напишите вспомогательную функцию, которая выполняет форматирование и передает строку в метод Write.

Если вариант 1 не соответствует вашим потребностям, я бы порекомендовал использовать вариант 3 (поскольку вариант 2 является излишним).

Простым примером может быть что-то вроде:

    catch (Exception exception)
    {
        Logger.Write(LogHelper.CreateExceptionString(exception));
    }

    ...

    public static string CreateExceptionString(Exception e)
    {
        StringBuilder sb = new StringBuilder();
        CreateExceptionString(sb, e, String.Empty);

        return sb.ToString();
    }

    private static void CreateExceptionString(StringBuilder sb, Exception e, string indent)
    {
        if (indent == null)
        {
            indent = String.Empty;
        }
        else if (indent.Length > 0)
        {
            sb.AppendFormat("{0}Inner ", indent);
        }

        sb.AppendFormat("Exception Found:\n{0}Type: {1}", indent, e.GetType().FullName);
        sb.AppendFormat("\n{0}Message: {1}", indent, e.Message);
        sb.AppendFormat("\n{0}Source: {1}", indent, e.Source);
        sb.AppendFormat("\n{0}Stacktrace: {1}", indent, e.StackTrace);

        if (e.InnerException != null)
        {
            sb.Append("\n");
            CreateExceptionString(sb, e.InnerException, indent + "  ");
        }
    }
32
ответ дан 1 December 2019 в 19:14
поделиться

Microsoft предоставила подробное руководство по этому поводу здесь: Разработка приложений с использованием блока приложения для ведения журнала

Стоит ознакомиться с тем, что они говорят, так как это довольно мощно.

Если вы хотите чего-то более приземленного, некоторые рабочие примеры представлены в этой статье блога: Как настроить и использовать блок приложения для ведения журнала

Если у вас все еще возникают проблемы после их прочтения, отредактируйте свое сообщение, указав более подробную информацию о том, в чем проблема.

4
ответ дан 1 December 2019 в 19:14
поделиться

Вам нужно добавить соответствующий слушатель для текстовых файлов - см. этот пост, он для ASP.NET, но конфигурационные файлы работают одинаково для всех приложений.

0
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: