Как получить информацию трассировки стека для входа в систему при использовании GAC - PullRequest
0 голосов
/ 20 марта 2009

Я хотел бы получить информацию о трассировке стека (имя файла и номер строки) для регистрации исключений и т. Д. В производственной среде. Библиотеки DLL установлены в GAC. Есть ли способ сделать это?

В этой статье говорится о размещении файлов PDB в GAC:

Вы можете легко определить их, потому что они скажут, что вам нужно скопировать символы отладки (файл .pdb) в GAC. Само по себе это не сработает.

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

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

Я скопировал dll и pdbs в GAC, но я все еще не получаю информацию трассировки стека. Вот что я получаю в файле журнала для трассировки стека:

OnAuthenticate at offset 161 in file:line:column <filename unknown>:0:0
ValidateUser at offset 427 in file:line:column <filename unknown>:0:0
LogException at offset 218 in file:line:column <filename unknown>:0:0

Я использую NLog.

Мой макет NLog:

layout="${date:format=s}|${level}|${callsite}|${identity}|${message}|${stacktrace:format=Raw}"

$ {stacktrace: format = Raw} является соответствующей частью.

Ответы [ 2 ]

1 голос
/ 20 марта 2009

Попробуйте использовать raw в нижнем регистре:

   ${stacktrace:format=raw}

Если это не сработает, попробуйте:

   ${exception:format=stacktrace}
0 голосов
/ 21 июля 2009

Попробуйте это:

StringWriter sw = new StringWriter();
new Throwable().printStackTrace(new PrintWriter(sw));
String stackTrace = sw.toString();

Строка stackTrace будет иметь стековый поток текущего потока

...