То, что сейчас приходит на ум, использует перехват (например, Unity для перехвата экземпляров или типов).
Я использовал это некоторое время назад для попытки возврата к локальным данным (кэшированным из предыдущих запросов) при сбое служб wcf.
Так что, я думаю, вы могли бы перехватывать вызовы ваших классов DALи попробуйте записать информацию в событиях до / после конвейера.
Для получения дополнительной информации вы можете проверить эту ссылку .
Другим подходом может быть внедрениекласс logger в ваших классах DAL (которые, мы надеемся, имеют базовый класс DAL) с использованием контейнера IoC (снова Unity или MEF, если вы находитесь в .NET 4.0).
Если что-то еще приходит мне в голову, я`дам вам знать.
С уважением ...