Блокировка приложения - регистрация звонящего

2

При регистрации в Log4Net очень легко поставить класс, который вызвал журнал в файл журнала. В прошлом я обнаружил, что это очень легко отслеживает код и просматривает поток через классы. В Log4Net я использую свойство% logger в шаблоне преобразования, например:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

И это дает мне результат, который я хочу:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

На выходе вы можете видеть, что класс, который вызвал журнал, - Log4NetTechDemo.Tester, поэтому я могу легко проследить ошибку обратно в этот класс.

В блоке Appliance Logging я не могу понять, как это сделать с помощью простого вызова журнала. Кто-нибудь знает, как это можно сделать? Если да, то пример или шаги для этого были бы очень полезными.

Теги:
logging
enterprise-library

2 ответа

5
Лучший ответ

Добавить метод вызова в словарь LogEntry ExtendedProperties; если вы не удалили токены ExtendedProperties из шаблона форматирования, конечно.

Поместите что-то вроде этого в обертки журнала:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

Вызов вызывает в конце журнала следующее:

Extended Properties: Called from - LAB_Demo.Tester
1

Мы не нашли простой способ, не нажав StackTrace. Если это исключение, мы просто возьмем из этого:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

Для чатов, мы просто пишем строку. У нас есть фрагмент, способный захватить имя класса при вставке. Мы также объявляем строку const с именем класса.

Не красиво, но это лучшее, что мы нашли. Я надеюсь, что у кого-то есть бетвейший ответ в этой теме:)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню