2009-12-17 32 views
8

Tôi muốn có thể đăng nhập thông tin tin nhắn trong cơ sở dữ liệu và tôi đang cố gắng quyết định cách tốt nhất để thực hiện điều đó. Có thể cấu hình các cơ chế ghi WCF để ghi vào cơ sở dữ liệu thay vì một tệp không? Cảm ơn.Làm cách nào tôi có thể bật ghi nhật ký WCF để ghi vào Cơ sở dữ liệu?

+1

Blog [Định cấu hình dịch vụ WCF để sử dụng Thư viện doanh nghiệp: Đăng nhập ứng dụng để ghi dữ liệu vào cơ sở dữ liệu] (http://weblogs.asp.net/sukumarraju/archive/2011/11/07/configuring-wcf-service-to- use-enterprise-library-logging-application-to-log-data-to-database.aspx) có hướng dẫn từng bước, cách cấu hình 'Trình theo dõi cơ sở dữ liệu theo dõi' –

Trả lời

8

Bạn cần có hai điều:

  • một cấu hình thích hợp để cho phép truy tìm NET
  • một dấu vết người nghe để nắm bắt các thông điệp theo dõi và lưu trữ chúng trong một cơ sở dữ liệu

Đối # 1:
Bạn cần phải bật truy tìm trong WCF đầu tiên - bạn cần một mục trong <system.serviceModel> mà cho phép truy tìm:

<system.serviceModel> 
    <diagnostics> 
     <messageLogging 
      logEntireMessage="true" 
      logMalformedMessages="false" 
      logMessagesAtServiceLevel="true" 
      logMessagesAtTransportLevel="false" 
      maxMessagesToLog="300000" 
      maxSizeOfMessageToLog="200000"/> 
    </diagnostics> 
</system.serviceModel> 

Tiếp theo, bạn cần phải cấu hình NET tracing như vậy:

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xml" type="WcfTrace.Trace.WebTraceListener,WcfTrace.Trace" /> 
    </sharedListeners> 
</system.diagnostics> 

Ở đây, thay vì của Trình theo dõi WebTraceListener hoặc các trình nghe được xác định trước khác, bạn cũng có thể cắm trình theo dõi theo dõi cơ sở dữ liệu của riêng mình.

Đối # 2:
Bạn có thể - tất nhiên - viết riêng của bạn SqlTraceListener - hoặc bạn có thể sử dụng một trong nhiều giải pháp làm sẵn trên mạng, ví dụ this one here (tải về mã từ Codeplex).

0

Nếu bạn không cần toàn bộ thông báo SOAP, tôi khuyên bạn nên sử dụng log4net với triển khai IParameterInspector hoặc IDispatchMessageInspector tùy chỉnh, trong trường hợp này bạn có thể viết để chỉ ghi lại những gì bạn cần. Nếu không, hãy lấy giải pháp của marc_s.

Các vấn đề liên quan