2014-02-08 1 views
1

Я сконфигурировал макет NLog для получения имени метода и номера строки с помощью параметров $ {callsite}, и он хорошо работает локально, как показано ниже.номера строк исчезают при производстве в журналах NLog

Application_Start(Global.asax.cs:33) 

Но он меняется на Application_Start без номеров строк на производстве. Я предполагаю, что из-за этого он не может получить доступ к номерам строк без файлов .pdb, но я использую .NET 4.5, что позволяет получить доступ к номерам строк с помощью атрибутов вызывающего абонента без файлов .pdb. И я понимаю, что NLog не оптимизировали себя для .NET 4.5.

Есть ли способ разместить номера строк для производства для .NET 4.5 с помощью NLog?

+0

Файлы корабля PDB будут очевидным исправлением. Можете ли вы это сделать? – Blorgbeard

+0

Это не вызовет некоторые издержки производительности? – Freshblood

+0

Просто отправляю файлы, я так не думаю. Если вы включили много протоколов трассировки на трассе, тогда будет накладные расходы. – Blorgbeard

ответ

2

NLog не использует новые атрибуты в .NET 4.5

Он использует StackTrace класс.

Это видно из source code.

Таким образом, вам нужны файлы .pdb для номеров строк.

+0

FYI, атрибуты информации о вызывающем абоненте не поддерживаются в NLog, поскольку это было бы нарушением изменения (и еще одним нарушением изменений, когда быть добавлены дополнительные атрибуты информации о вызывающем абоненте) – Julian