Блок приложения регистрации — регистрация вызывающего абонента

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

Вопрос

При входе в систему с помощью 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, поэтому я могу довольно легко отследить ошибку до этого класса.

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

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

Решение

Добавьте вызывающий метод в словарь ExtendedProperties LogEntry;при условии, конечно, что вы не удалили токены 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

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

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

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

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

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

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