Gestire Output del TraceSource

giovedì 01 ottobre 2009 - 16.46

Teech Profilo | Expert

Stò implementando una classe per gestire il tracing delle operazioni su una applicazione.
Attualmente fra i vari Listener ne ho uno su FileStream... Attraverso una riga di codice di questo tipo riesco a scrivere nel file di trace: la riga si presenta circa così:
TraceSource.TraceEvent(TraceEventType.Start, 0, Now.ToString)

Sul file si presenta una riga simile alla seguente:
Applicazione Start: 0 : 01/01/1900 00.00.00
Quello che vorrei fare è dare un layout diverso a questa stringa (vorrei mettere la data e l'ora all'inizio, non scrivere 'Start', e altre cose): posso personalizzare questo output? Se si, come? sul web non ho trovato nulla


EDIT:
Ho controllato e mi pare più difficile del previsto:
Io uso un TextWriterTraceListener che eredita dalla classe TraceListener: nella classe TraceListener è presente un metodo Privato chiamato WriteHeader che credo scriva proprio quella parte che a me non interessa. Cercando in giro ho visto che esiste anche un metodo WriteFooter... Essendo metodi privati non credo si possano "manipolare"... Anche potendo fare l'override di questi metodi dovrei riscrivermi una classe TextWriterTraceListener personalizzata senza poter ereditare da quella presente in quanto dovrei già ereditare dalla TraceListenerNoHeader che mi creerei... Penso non ci siano soluzioni ad un problema così apparentemente semplice... Avete consigli...
Grazie
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alx_81 Profilo | Guru

Ciao
>ad un problema così apparentemente semplice... Avete consigli...
prova a dare un'occhiata a Log4Net, una implementazione di Log4j di apache:
http://logging.apache.org/log4net/release/features.html

dalle feauters si evince che c'è un TraceAppender, magari puoi scegliere l'output in maniera più semplice..

>Grazie
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Teech Profilo | Expert

Grazie della dritta, ma ho preferito crearmi un TextWriteTraceListener personalizzato (ereditando da questa classe) e fare l'override del metodi di Trace (TraceEvent, TraceInformation e TraceData) così da creare un output personalizzato ed "avere in mano" la gestione del trace per il file... Lo metto nel mio framework e così sarà un lavoro già fatto le prossime volte :-)

Log4Net mi sembra rischioso da usare nel caso di aggiornamento del framework.NET e mi pare di aver capito che necessita di Apache per funzionare (magari ho capito male). Solitamente preferisco usare il meno possibile strumenti esterni se non controlli (che comunque devono essere ereditati dai controlli base e non creati ex novo) per il puro aspetto grafico.

Forse ho scelto la via più difficile e dispendiosa, ma spero che un giorno mi ritorni utile il lavoraccio di adesso.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alx_81 Profilo | Guru

>Log4Net mi sembra rischioso da usare nel caso di aggiornamento
>del framework.NET e mi pare di aver capito che necessita di Apache
>per funzionare (magari ho capito male).
Ebbene sì. Mai installato apache ed i nostri server in produzione usano log4net
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5