Лучший способ добавить логирование в существующее приложение (Windows или веб) .Net - PullRequest
3 голосов
/ 30 мая 2009

Я унаследовал несколько приложений .Net (C #), к которым не добавлены ни трассировка, ни логирование. Это приложение делает все от создания, чтения, обновления и удаления записей. Он отправляет электронную почту и звонит веб-сервисам.

Конечно, обслуживать его - это кошмар, потому что там нет логирования и механизма попытки перехвата (я знаю, что тоже не мог поверить).

Итак, что было бы лучшим способом реализовать ведение журнала в этой системе. Я не могу перейти на каждый вызов функции и добавить строки регистрации. Есть ли какой-нибудь способ, где я могу иметь динамическое ведение журнала, которое может вести журнал на основе имен методов, которые я предоставляю.

т.е. Когда вызывается UpdateOrder (), мой регистратор должен регистрировать (вызывался обновленный метод заказа)

Спасибо

Ответы [ 3 ]

2 голосов
/ 08 октября 2009

Используйте log4net, это .NET-версия Apache log4j. Библиотека хорошо протестирована, используется программистами повсеместно и очень настраиваема. Поскольку вы унаследовали этот код, было бы неплохо пройти через него и начать добавлять поддержку журналирования.

Параметры настройки обрабатываются через глобальный файл в проекте, который может указывать, куда направляется информация журнала (электронная почта, текстовые файлы, консоль) и какой уровень детализации требуется для каждого источника вывода информации журнала.

1 голос
/ 30 мая 2009

Вы можете использовать инфраструктуру AOP, такую ​​как Postsharp , чтобы создать определенный атрибут для регистрации вызовов методов:

public class TraceAttribute : OnMethodBoundaryAspect 
{ 
  public override void OnEntry( MethodExecutionEventArgs eventArgs) 
  { Trace.TraceInformation("Entering {0}.", eventArgs.Method);  } 

  public override void OnExit( MethodExecutionEventArgs eventArgs) 
  { Trace.TraceInformation("Leaving {0}.", eventArgs.Method);   } 
}

(этот код - пример с домашней страницы)

Затем вы можете применить этот атрибут к методам, которые вы хотите регистрировать:

[Trace]
public void UpdateOrder()
{
    ...
}
1 голос
/ 30 мая 2009

Вот что-то, если вы находитесь в .NET:

http://www.codeproject.com/KB/dotnet/LoggerByHernandson.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...