Как мне получить доступ к имени запущенного метода? - PullRequest
3 голосов
/ 06 ноября 2010

Я хотел бы записать имя запущенного метода в журнал. Я знаю, что могу вручную ввести имя каждого метода в строку, записываемую в журнал, но мне бы хотелось что-то более автоматизированное и многоразовое. Я предполагаю, что это может быть достигнуто с помощью отражения, но я не знаю, с чего начать.

Есть предложения или примеры кода? Спасибо!

Ответы [ 3 ]

4 голосов
/ 06 ноября 2010

System.Reflection.MethodBase.GetCurrentMethod().Name должен сделать свое дело.

2 голосов
/ 06 ноября 2010

Какую среду ведения журнала вы используете?

В log4net используйте метод% в макете шаблона

<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message - Method:%method%newline"/>
</layout>

См .: http://logging.apache.org/log4net/release/sdk/index.html

Если вы используете NLog2.0 вы можете использовать $ {CallSite} в вашем макете.См .: https://github.com/nlog/nlog/wiki/Callsite-Layout-Renderer

Таким образом, вам даже не нужно заботиться или называть метод самим.Позвольте каркасу регистрации сделать это для вас.Но имейте в виду, что получение Stackframe идет медленно.

2 голосов
/ 06 ноября 2010

Взгляните на класс System.Diagnostics.StackTrace

System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
string methodName = st.GetFrame(0).GetMethod().Name;

Имейте в виду, что здесь производительность снижается.Вы должны быть осторожны, используя это в чувствительном к производительности коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...