ведение журнала - изменение реализации? - PullRequest
2 голосов
/ 18 декабря 2009

Мы использовали log4net для регистрации нашего приложения веб-форм asp.net. Наше ведение журнала обычно находится на бизнес-уровне, и типичная реализация выглядит следующим образом

SomeMethodCall(MethodParams)
{
  Log.Start("Starting Some Method");
  try
  {
   //do something
  }
  catch(Exception ex)
  {
    Log.Exception("exception in SomeMethodCall" + ex.message);
  }

  Log.End("End SomeMethod");
}

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

Я подумываю об использовании некоторых сред AOP, чтобы сделать это более понятным способом, просто пометив методы атрибутами для регистрации и обработки исключений.

Есть две вещи, которые меня касаются АОП (после моего первоначального прочтения).

Некоторые фреймворки внедряют код в ваш IL (согласно моему пониманию) и беспокоятся, не введет ли он меня в заблуждение. Возможно, я смотрю на строку x, заданную моей платформой AOP, где в действительности это может быть строка y в моем приложении. Мой страх необоснован?

Производительность. Какую нагрузку можно было бы увеличить при использовании инфраструктуры AOP.

Редактировать: я также изучал PolicyInjectionApplicationBlock . К сожалению, я не могу позволить себе роскошь менять реализации внутри своей бизнес-логики

Ответы [ 2 ]

2 голосов
/ 18 декабря 2009

Вы говорите, что большинство / все ваши методы принимают эту структуру?Если так, то мой совет - уменьшить ваши записи.(Я подчеркиваю, что это совет, а возможно, и спорный совет).

В действительности не должно быть необходимости использовать общий журнал входа и выхода каждого отдельного метода, вместо этого поместитеваши записи журнала более стратегически.Я хотел бы убедиться, что все сообщения журнала имеют «цель» - если я не могу придумать сценарий, в котором это сообщение журнала могло бы помочь или чем-то помочь мне при отладке, тогда в моем коде нет никакого дела!

2 голосов
/ 18 декабря 2009

Вы можете прочитать это , также прочитать 7 подходов для АОП в .Net , я использую АОП в Java, и я не сделал не вижу проблемы с производительностью. В любом случае проверьте здесь, чтобы быть осторожным ... .

Дополнительный
Spring.Net AOP

...