2014-12-25 5 views
5

Я использую класс Trace из роли Azure Worker.System.Diagnostics.Trace - правильный способ регистрации исключений

Я хочу войти исключения в пути, который будет печатать всю информацию об исключении, которое, как правило:

  • сообщение об исключении
  • Исключения StackTrace
  • Рекурсивных печатать внутренние исключений

Я вижу только метод Trace.TraceError, который получает строку и аргументы. Разве нет что-то, что эквивалентно фреймворкам регистрации Java, которые получают исключение и умеют его регистрировать? (да, я делаю первые шаги в мире MS ...)

+6

Вы должны знать (и ответ Эрно де Weerd в эксплуатирует этот факт), что Exception.ToString() форматирует всю информацию, которую вы обычно видите отображается в любом месте для исключения. (В течение многих лет я этого не понимал и использовал Exception.Message и Exception.this и Exception.that, чтобы отобразить исключение.) – RenniePet

+1

Еще один комментарий, так как вы говорите, что вы новичок в .Net: Доступно несколько пакетов регистрации для .Net. Вот сравнение, которое не может быть беспристрастным, поскольку оно опубликовано одним из владельцев пакетов: http://www.dotnetlogging.com/comparison/ – RenniePet

ответ

6

Нет, нет. Но вы могли бы написать метод расширения для класса Exception, что делает это так, вы могли бы назвать

someException.Trace(); 

Метод ToString класса Exception, вероятно, возвращает все, что вы хотите так просто Трассировка что. Вы можете добавить дополнительную информацию (повторить внутренние исключения, если трассировка стека недостаточно), идентификатор процесса, идентификатор пользователя, идентификатор потока и т. Д. Таким же способом.

public static class ExceptionExtensions 
{ 
    public static void Trace(this Exception _this) 
    { 
     Trace.TraceError("{0:HH:mm:ss.fff} Exception {1}", DateTime.Now, _this); 
    } 
} 
Смежные вопросы