2010-01-26 9 views
16

Attualmente sto sviluppando un'applicazione C# che ha il proprio log. Quando vengono lanciate eccezioni, l'eccezione viene salvata in un elenco che può essere visualizzato dall'utente tramite una vista elenco. Quando l'utente fa clic su un'eccezione nella visualizzazione elenco, la traccia dello stack dell'eccezione viene visualizzata in una casella di testo. Ma anche quando eseguo il programma su una macchina remota, la traccia dello stack mostra i percorsi dei file ai file sorgente originali dalla macchina su cui è stata compilata l'applicazione.Non mostrare i percorsi dei file della macchina di compilazione nello stack trace

es .:

at C:\Folder1\Folder2\Class1.cs:81 
at C:\Folder1\Folder2\Class2.cs:65 
at C:\Folder1\Folder1\Class3.cs:21 

Solo la visualizzazione dei file di origine senza cartelle sarebbe bello ...

Come posso cambiare questo comportamento?

Esiste una soluzione nativa? O devo semplicemente fare qualche manipolazione di stringhe?

+0

Che aspetto ha il tuo codice di registrazione? – ChrisF

+0

Basta filtrare il percorso con un'espressione Regex. O Path.GetFileName(). –

risposta

5

I percorsi dei file sono inclusi nei file "program database" (.pdb). Tali file vengono creati durante la compilazione e i percorsi in questi file sono come nella macchina di compilazione.

È possibile rimuovere i file .pdb dall'installazione, ma in questo modo la traccia dello stack sarà solo la metà più interessante di adesso, poiché non ti dirà la riga su cui si è verificato l'errore. Normalmente, non si esegue il codice nell'ambiente di produzione con i file Pdb allegati.

Se si desidera mantenere la "traccia di stack interessante", è possibile considerare di eseguire una sostituzione di stringa dei nomi di cartella, dopo aver chiamato exceptionObject.toString().

+0

Grazie =). Ha funzionato in questo modo. – Emiswelt

Problemi correlati