2009-11-17 4 views
6

Tôi viết một số bản ghi vào nhật ký sự kiện sử dụng thư viện doanh nghiệp MicrosoftThiết lập một 'category' trong khai thác gỗ thư viện doanh nghiệp .net (để ghi sự kiện)

nó viết log đi tốt nhưng doesnt dường như thiết lập các loại trong bản ghi sự kiện. Danh mục xuất hiện không sao trong nội dung thư của nhật ký (nếu tôi chọn đặt nội dung đó) nhưng trình xem sự kiện sự kiện không chọn danh mục.

Tôi đang thiếu gì?


C# nguồn

LogEntry log = new LogEntry(); 
log.Message = "Test"; 
log.Categories.Add("Event"); 
Logger.Write(log); 

web cấu hình

<loggingConfiguration name="Logging Application Block" tracingEnabled="true" 
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"> 
<listeners> 
    <add source="TestLogSource" formatter="Text Formatter" log="TestLog" 
    machineName="" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    name="Formatted EventLog TraceListener" /> 
</listeners> 
<formatters> 
    <add template="Timestamp: {timestamp}&#xD;&#xA;Message: {message}&#xD;&#xA;Category: {category}&#xD;&#xA;Severity: {severity}" 
    type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    name="Text Formatter" /> 
</formatters> 
<categorySources> 
    <add switchValue="All" name="Events"> 
    <listeners> 
     <add name="Formatted EventLog TraceListener" /> 
    </listeners> 
    </add> 
    <add switchValue="All" name="General"> 
    <listeners> 
     <add name="Formatted EventLog TraceListener" /> 
    </listeners> 
    </add> 
</categorySources> 
<specialSources> 
    <allEvents switchValue="All" name="All Events" /> 
    <notProcessed switchValue="All" name="Unprocessed Category" /> 
    <errors switchValue="All" name="Logging Errors &amp; Warnings"> 
    <listeners> 
     <add name="Formatted EventLog TraceListener" /> 
    </listeners> 
    </errors> 
</specialSources> 

+0

'log.Categories.Add (" Event ** s ** ");'? –

+0

bạn có muốn nói các sự kiện đã đăng nhập trong danh mục của riêng bạn trong trình xem sự kiện không? Hoặc khi bạn xem trong trình xem sự kiện, bạn không thể thấy danh mục trong chi tiết? – curtisk

Trả lời

5

Các EventLog loại là riêng biệt và khác biệt với các loại LogEntry. Vì vậy, tôi không nghĩ rằng bạn có thể sử dụng các thể loại LogEntry để hiển thị trong trường thể loại EventLog.

Từ phối cảnh dữ liệu, các loại không tương thích: danh mục EventLog là một đoạn ngắn trong khi các thể loại LogEntry là một chuỗi. Có, trong trình xem sự kiện, nó hiển thị một chuỗi nhưng giá trị này được tra cứu thông qua một CategoryMessageFile được định nghĩa trong sổ đăng ký.

Nếu bạn muốn có thể thực hiện một số tính năng lọc trong trình xem sự kiện, bạn có thể sử dụng thuộc tính LogEntry.EventId. Bạn có thể điền điều này bằng cách sử dụng bất kỳ quy ước nào bạn muốn. ví dụ. ID sự kiện duy nhất cho mỗi điểm ghi nhật ký, ID sự kiện trên mỗi lớp, ID sự kiện cho mỗi lớp hoặc một số quy ước khác.

Là dự phòng, bạn luôn có thể thực hiện Tìm kiếm danh mục của mình trong mô tả về mục nhập EventLog.

1

Liên kết này (http://drdobbs.com/184405714) chứa một số thông tin khác về cách tạo danh mục.

+0

một liên kết hữu ích khác trên Danh mục sự kiện - http://msdn.microsoft.com/en-us/library/system.diagnostics.eventsourcecreationdata.categoryresourcefile.aspx – Rajes