All streams
Search
Write a publication
Pull to refresh

Comments 8

Если нужно какие-то зависимости, свойства и т.п. добавить сразу во все проекты в солюшне, можно просто добавить один .props файл (например, его часто используют для добавления анализаторов исходного кода).

https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-directory

Попробуйте статический класс логгера создать, создание сервисов руками - плохая практика.

BeforeExecution, afterExecution - да, здоро что есть логирование времени исполнения, но это лучше вынести в Debug (#if DEBUG ... #endif). Начал дебажить - смотри сколько какой метод исполняется.

Да и в общем, в VisualStudio есть профилирование, скорее всего эти отметки по времени ничего не дадут. (а метод может быть вызван и 1м раз в минуту :) )

В код толком не вникал, но если я правильно понимаю, и этот вариант, и вариант из первой статьи основаны на reflection. Отсюда сразу вопрос: а сколько времени занимает собственно это автоматическое логирование? При какой частоте вызовов это становится проблемой? Или тут все делается в начале, а потом идут чистые оберточные вызовы?

Fody - работа с IL готовой сборки.

Логирование начала конца метода сделано зря.

System.Reflection тут нет.

Эээ... Это не очень поясняет, но ладно.

120 мс выполнение тестов с логированием через MethodBoundaryAspect

100 мс выполнение тестов с логированием через Reflection

070 мс выполнение тестов без логирования

В документации у MethodBoundaryAspect.Fody есть цифры по влиянию логирования, почитайте, что пишут разработчики.

Логирование через Reflection более гибкое, но приходиться создавать обёртку, и каждый метод для логирования приходиться добавлять в интерфейс.

Логирование через MethodBoundaryAspect.Fody даёт возможность логировать приватные методы, но приходиться каждый метод отмечать атрибутом.

Пока позволяет логика логирования пользуемся MethodBoundaryAspect.Fody, когда гибкости перестаёт хватать переписываем на Reflection.

Спасибо. На reflection или... на Log.trace()

А нахера логировать вызовы методов? Видел в жизни слишком много идиотского кода где буквально каждый метод был обернут в log(Begin ...")/log("End ...") и еще довесок и в try/catch, причем, часто был обернут и сам метод и его вызовы. Больший идиотизм и придумать сложно.

Sign up to leave a comment.

Articles