Satt här ensam på en lördag och labbar lite med Trace objektet ... Har två frågor! Hej Rickard, Johan, "men om man ska använda ett loggsystem verkar det inte vara ett alternativ" TextWriterTraceListener verkar nog mest intressant om man vill använda sig av Du kan lägga in dina trace-klasser i web.config så "slipper" du göra det i din kod.Trace klassen
Jövligt kool måste jag medge, speciellt att man kan lägga in egna "varnngar" och
spåra precis som man vill ...
Var sjutton finns den fysiska filen Trace.axd ?? Jag hittar den inte,
MEN jag kan komma åt den från browsern om jag tittar i http://localhost/approot/trace.axd
Hitter den inte med sök (inkl hidden och systemfiles) men i ms press boken så står
det att det är en fysisk fil. *förvirrad*
Min andra fråga är hur prestandasänkande är Tracern om man har den på ständigt ?
Jag vill ju gärna trace'a de senaste kanske 1000 requests, men endast logga i trace.axd
filen, inte visa för användare.
Då vill jag även lägga in mina egna entries, med IP tillhörande request, och lite sånt.
Så hur mkt sänker trace egentligen ? Bör man skriva en egen slags log kanske ?
Trevlig lördagsnatt till er alla med mycket slarv !Sv: Trace klassen
1... Trace.axd är satt som en handler (httpHandler) i machine.config, detta gör att när du anropar en fil vid detta nman kommer asp .net motorn att köra denna httphandlern. Så url mässigt ser det ut som en fil men är i själva verket ett resultat ur en assembly. Du kan skapa egna sådana handers om du vill med dina enga namn och få den att köra på vissa filmnamn eller filendelser om du vill, leta på HttpHandler för mer information i SDKn.
2... Prestandan kommer ju självklart bli trögare då du utför en del saker vid trace som den skall hantera förutom det fu själv hanterar. Dock är det svårt att säga hur mycket detta kommer att påverka då allt handlar om olika faktorer, ex hur snabb är din dator? hur mycket rutiner utför din applikation i övrigt? hur många besökare har du? hur många andra siter har du snurrande på samma maskin etc etc... Enklaste är att du faktist gör test med Stress tool eller liknande. Du har med i Vs .Net 2003 MS application center test den kan du experimentera med om du vill.
Mvh JohanSv:Trace klassen
Det förklarar saken! Tackar ödmjukast för ditt detaljerade svar!
Känner mig mycket klokare nu =)
Blev lite förvirrad när det står i boken att trace.axd är en fysisk fil.
Tracen är verkligen imponerande annars, men om man ska använda
ett loggsystem verkar det inte vara ett alternativ att använda trace då,
utan fortsätta köra på sina egna system. Hmm, får labba lite, och testa
runt me testcenter som du föreslår.
*Ah well, back to studies* Sv: Trace klassen
Glöm inte att du kan koppla på egna TraceListeners. Då blir Trace-klasserna verkligt kraftfulla!
Du har ju bla. "TextWriterTraceListener" som loggar mot en viss fil, samt "EventLogTraceListener" som skriver mot system-loggen.
Dessa lägger du till den kollektion som finns under "System.Diagnostic.Debug" samt "System.Diagnostic.Trace" (de delar samma kollektion). All data som du nu skriver till Trace eller debug skrivs nu även med automatik till din "Listener".
Förutom detta kan du även skapa en egen Listener med enkelhet som tex. mailar alla meddelanden.
Artikel om Trace, TraceSwitchar och TraceListeners hittar du på:
http://www.swesecure.com/?ID=5df7c18d-d538-4e4c-9768-0c7760808d19&IID=15d486eb-f8e4-46ee-a5b5-fb82b7204b3e
Artikel om hur du kan skapa egna TraceListeners hittar du på:
http://www.swesecure.com/?ID=5df7c18d-d538-4e4c-9768-0c7760808d19&IID=80543579-d711-44f8-ac1b-cbed0f175370
Lycka till!Sv:Trace klassen
något mer bestående än Trace.axd fil/handlern.
Tack för länkarna ska läsa dessa dem lite senare =)Sv: Trace klassen
Kod kompilerad i debug skickar även debug.Write till samma trace-fil. Release kompilerad kod så försvinner dessa och det är bara Trace.Write som landar i loggfilen.
Angående prestanda så beror det ju naturligtvis på VAD man skickar till trace-filen.
Så lägg in följande i din web.config
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="textFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\Log\MyLoglog" />
</listeners>
</trace>
</system.diagnostics>
Det kanske kan vara värt att även titta på Enterprise Instrumentation Framework (EIF), det har mycket hög prestanda men naturligtvis så beror det i slutändan på vad det är du trace'ar
Information om EIF finns här : http://msdn.microsoft.com/vstudio/enterprise/eif/default.aspx