2013-07-20 2 views
1

У меня есть веб-сайт, работающий на (дешевом) размещенном решении компании. Здесь есть база данных и веб-сервер. Я хотел бы регистрировать активность, которая происходит в моем приложении, вниз через слои (возможно, не столько презентация). Итак, был вызван служебный вызов .... бизнес-функция запустилась в BL ... был выполнен вызов базы данных ... исключение было поймано.Регистрация в размещенной среде

Все слои разделены. Итак, я думаю, что вход в базу данных не является разумным, потому что мне нужно будет получить доступ к базе данных из всех слоев. Например, пользователь выбирает продукт. В методе сервиса (GetProductById) я должен был зарегистрировать, что он был выполнен. Затем этот метод вызывает GetProductById в BL. Я тоже хочу войти в систему ... и, наконец, мой GetProductById в моем аксессуаре данных. Мне нужно подключение к базе данных во всех слоях.

Я думал о добавлении небольшого класса, который предоставляет один метод (журнал). И ссылайтесь на эту DLL из каждого слоя. И эта DLL принимает сообщение и имеет собственное соединение с БД, с одним методом - строкой записи. Но это будет слишком накладным? Каждое событие «Журнал» - это открытие базы данных, запись, закрытие. Это немного тяжело? БД мощна ... Но один вызов может привести к от 3 до 30 событий «Журнал» (и это поможет мне найти проблемы с кодом).

Отдельные призывы класса журнала, так как я могу изменить его на регистратор файлов, если захочу. Но предпочитайте возможность запроса таблицы, например, «ErrorLevel». или что-то.

Моя единственная проблема - накладные расходы. Не о чем беспокоиться?

+0

Что вы можете написать самостоятельно? Исследуйте, если существующие имеют все партии записей журнала на запись уже отсортированы ... –

ответ

2

Logging is a cross cutting concern, так что это не имеет смысла в перспективе «слоя». Не беспокойтесь о том, попадает ли он в БД или нет.

Я бы порекомендовал использовать библиотеку регистрации, которая уже создана, вместо создания собственного. Поскольку он уже заботится обо всех этих проблемах, вас беспокоит (как взломать наилучшую производительность из него, не принимая кучу ресурсов и т. Д.). NLog действительно хорош с поддержкой, специально разработанной для веб-сайтов ASP.NET, и будет отлично работать в других ваших слоях. Он имеет решения для записи файлов или баз данных.

+1

Спасибо. Пробовал NLog. Отлично. Благодарю. – Craig

+0

Да, это мой любимый. Некоторое время они не выпускали релиз (хотя все еще твердый), но если вы столкнулись с проблемой ... вытащить последний источник, у него есть некоторые дополнительные исправления ошибок. – scottheckel

Смежные вопросы