Chciałbym, aby moja aplikacja wypisała różne pliki śledzenia o nazwach takich jak MachineName_UserName_yyyymmdd_hhmmss.txt, gdzie nazwa użytkownika jest aktualnie zalogowanym użytkownikiem, a czas jest początkiem aplikacji. Obiekt nasłuchujący .Net TextWriterTraceListener wydaje się obsługiwać tylko zakodowaną nazwę pliku określoną w pliku konfiguracyjnym. Czy istnieje sposób, aby to zrobić bez pisania niestandardowego detektora śledzenia..Net Niestandardowy plik śledzenia Nazwa
Zakładając mam napisać słuchacza zwyczaj ślad, ja wdrożyliśmy TraceListener takiego:
Imports System.Diagnostics
Public Class MyCustomTraceListener
Inherits TextWriterTraceListener
Public Sub New()
'Need to do it this way as the Base constructor call has to be the first statement
MyBase.New(String.Format("AppNameTraceFile_{0}_{1}_{2}{3}{4}-{5}{6}{7}.txt", _
Environment.MachineName, _
Environment.UserName, _
DateTime.Now.ToString("yyyy"), _
DateTime.Now.ToString("MM"), _
DateTime.Now.ToString("dd"), _
DateTime.Now.ToString("HH"), _
DateTime.Now.ToString("mm"), _
DateTime.Now.ToString("ss")))
Me.IndentSize = 4
End Sub
End Class
w pliku konfiguracyjnym, mam skonfigurowane źródło śledzenia tak:
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="MyTraceSource"
switchName="mySwitch"
switchType="System.Diagnostics.SourceSwitch" >
<listeners>
<clear/>
<add name="MyTraceListener"
type="MyNameSpace.MyCustomTraceListener"
traceOutputOptions="ProcessId, DateTime, Callstack" />
</listeners>
</source>
</sources>
<switches>
<add name="mySwitch" value="Warning" />
</switches>
</system.diagnostics>
Tworzę źródło śledzenia tak:
Dim tsTraceSource As TraceSource = New TraceSource("MyTraceSource")
tsTraceSource.TraceEvent(TraceEventType.Warning, 0, "warning message")
Jednak na starcie, wciąż otrzymuję błąd, którego nie można znaleźć typu "MyNameSpace.MycustomTraceListener".
Czy ktoś widzi, na czym polega problem?
Dzięki.
To działa. Dziękuję Ci. – DevByDefault