Những gì bạn mô tả là lớp System.Diagnostics.Trace
, có một số phương pháp đơn giản để ghi vào đầu ra dấu vết chẩn đoán.
Đó là xa cách mạnh mẽ các chẩn đoán truy tìm trong .NET
Cách đẹp nhất để làm tracing là tạo ra một TraceSource
. Trong một lớp học TraceSource
có một tài sản Switch
mà lần lượt có một tài sản Level
nơi bạn xác định mức độ chi tiết mà bạn muốn cho TraceSource
cụ thể đó. Bạn có thể làm cho điều đó tracesource lắng nghe tất cả các cấp:
var ts = new TraceSource("My Verbose Debugger") {Switch = {Level = SourceLevels.All}};
Sau đó để theo dõi điều gì đó, bạn theo dõi để nguồn đó, nơi bạn chỉ định mức, như thế này:
ts.TraceData(TraceEventType.Verbose, 0, dataToBeTraced);
Các 0
là id của dấu vết và dataToBeTraced
là một đối tượng có dữ liệu cụ thể mà bạn muốn theo dõi (đó là thông số params [] object
, vì vậy bạn có thể chuyển vào nhiều đối tượng nếu bạn muốn).
Bây giờ, làm cách nào để sử dụng dữ liệu đó? Sử dụng số TraceListener
mà bạn thêm vào bộ sưu tập TraceSource
Listeners
của mình. Bạn thực hiện bắt nguồn lớp riêng của bạn từ TraceListener
và ghi đè lên các phương pháp TraceData
, như thế này:
class MyTraceListener : TraceListener
{
public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, params object[] data)
{
base.TraceData(eventCache, source, eventType, id, data);
// do what you want with the objects in the "data" parameter
}
}
Người nghe có thể được chia sẻ giữa nhiều tracesources, và nó sẽ chỉ nhận được mức dữ liệu mà nó TraceSwitch
mức cho phép.
System.Diagnostics.Trace
sử dụng một người biết lắng nghe như thế này (các DefaultTraceListener) được thêm vào theo mặc định cho cả hai Debug.Listeners
và Trace.Listeners
, nhưng trong nội bộ, nó hoạt động như tôi đã mô tả. Điều này tất cả có vẻ hơi khó hiểu lúc đầu, nhưng nó thực sự mạnh mẽ, và một khi bạn có một tập hợp các lớp trợ giúp ... ít nhất là tôi, đã ngừng sử dụng thư viện đăng nhập của bên thứ ba và sử dụng nó ở mức độ cao.
Đối với Azure, này là phỏng đoán vì tôi chưa bao giờ làm bất cứ Azure, nhưng tôi đoán bạn muốn cấu hình tracesource của bạn như thế này trong bạn app.config
(có thể web.config
? Không chắc chắn về web), thêm một mặc định nghe xanh cho các bản ghi:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sharedListeners>
<add name="AzureListener" type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<filter type="" />
</add>
</sharedListeners>
<sources>
<source name="MyTraceSource" switchValue="Verbose" >
<listeners>
<add name="AzureListener" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
"MyTraceSource"
là tên chuỗi bạn đã TraceSource
yo của bạn trong constructor khi làm điều đó thông qua mã.
Hoặc bạn chỉ có thể tạo ra một TraceSource
trong mã như trên, và thêm một Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener
để Listeners
bộ sưu tập của mình
Tôi tin rằng 'TraceInformation' có nghĩa là dành cho những gì bạn gọi là tiết. –
@ 500-InternalServerError nope, 'Information' và' Verbose' là hai cấp độ khác nhau – Jcl