Доброго времени суток!
Пишу сейчас один сервис, который будет круглосуточно выполнять всякие полезные действия.
Надо вести подробный лог.
Сейчас кодирую и вижу как буквально на глазах "полезный" код засоряется кодом логирования.
Подскажите, плиз, как вы боритесь с этой проблемной?
Про
аспекты я, конечно, слышал, но не хочется под это дело сторонние библиотеки привлекать.
И, кстати, какой вариант код по-вашему предпочтительнее (на осмысленность сообщений пожалуйста внимания не обращайте):
class MyClass
{
ILogger _logger;
...
void DoAnything()
{
_logger.Info("Начато выполнение действия...");
_logger.Info("Выполняется DoAction1...");
DoAction1();
_logger.Info("DoAction1 выполнено успешно");
_logger.Info("Выполняется DoAction2...");
DoAction2();
_logger.Info("DoAction2 выполнено успешно");
_logger.Info("Выполняется DoAction3...");
DoAction3();
_logger.Info("DoAction3 выполнено успешно")
_logger.Info("Действие выполнено успешно");
}
void DoAction1()
{ ... }
void DoAction2()
{ ... }
void DoAction3()
{ ... }
}
или такой:
class MyClass
{
ILogger _logger;
...
void DoAnything()
{
_logger.Info("Начато выполнение действия...");
DoAction1();
DoAction2();
DoAction3();
_logger.Info("Действие выполнено успешно");
}
void DoAction1()
{
_logger.Info("Выполняется DoAction2...");
...
_logger.Info("DoAction1 выполнено успешно");
}
void DoAction2()
{
_logger.Info("Выполняется DoAction2...");
...
_logger.Info("DoAction1 выполнено успешно");
}
void DoAction3()
{
_logger.Info("Выполняется DoAction3...");
...
_logger.Info("DoAction3 выполнено успешно");
}
}
В первом варианте, вроде бы логирование более централизованно, но код уж больно замусорен.
Во втором случае код логирования слишком размазан...
Или все-таки на аспекты смотреть? Кто-нибудь этот функционал из BlToolkit пробовал? Я его для доступа к данным использую...
Красота — наивысшая степень целесообразности. (c) И. Ефремов