Мы использовали 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 . К сожалению, я не могу позволить себе роскошь менять реализации внутри своей бизнес-логики