Tôi muốn ứng dụng của mình ghi ra các tệp theo dõi khác nhau có tên là MachineName_UserName_yyyymmdd_hhmmss.txt trong đó tên người dùng là người dùng hiện đã đăng nhập và thời gian là thời gian bắt đầu của ứng dụng. Trình nghe .Net TextWriterTraceListener chỉ hỗ trợ tên tệp được mã hóa cứng được chỉ định trong tệp cấu hình. Có cách nào để làm điều này mà không cần viết một trình theo dõi tùy chỉnh..Net Tên tệp theo dõi tùy chỉnh
Giả sử tôi đã viết một tùy chỉnh dấu vết người nghe, tôi đã thực hiện một tracelistener như thế này:
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
Trong tập tin cấu hình, tôi đã cấu hình nguồn dấu vết như thế này:
<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>
Tôi đang tạo nguồn theo dõi như vậy:
Dim tsTraceSource As TraceSource = New TraceSource("MyTraceSource")
tsTraceSource.TraceEvent(TraceEventType.Warning, 0, "warning message")
Tuy nhiên, khi khởi động, tôi tiếp tục lỗi không thể tìm thấy loại "MyNameSpace.MycustomTraceListener".
Có ai thấy vấn đề ở đây không?
Cảm ơn.
Tác phẩm này. Cảm ơn bạn. – DevByDefault