2012-05-28 23 views
9

Tôi có một số dịch vụ WCF .Net, cho các dịch vụ này tôi đã định cấu hình tệp app.config để ghi nhật ký thư được gửi và nhận trong tệp .svclog. bằng "Công cụ xem trình theo dõi dịch vụ" (SvcTraceViewer.exe). Công cụ này làm cho các tệp nhật ký hiển thị rõ ràng các thông điệp SOAP đang được xử lý..Net WCF Service Trace Log với chức năng quản lý tệp nhật ký (Rolling)

Tôi phải sử dụng trình nghe System.Diagnostics.XmlWriterTraceListener để định dạng chính xác tệp .svclog để có thể xử lý được bằng Công cụ trình theo dõi dịch vụ.

Vấn đề tôi có là tệp .svclog quá lớn & Công cụ xem trình theo dõi dịch vụ sẽ không sử dụng được do thời gian phản hồi chậm.

Công cụ xem trình theo dõi dịch vụ cung cấp cơ sở để cho phép mở một phần tệp nhật ký nếu tệp có kích thước> 40MB nhưng vẫn quá chậm. Dường như không có cơ sở nào trong tệp app.config để định cấu hình .svclog để tự động tạo tệp mới mỗi ngày hoặc khi tệp được kích thước nhất định.

Có trình đọc nhật ký văn bản được gọi là Microsoft.VisualBasic.Logging.FileLogTraceListener hỗ trợ thuộc tính logfilecreationschedule = "Hàng ngày" cuộn tệp nhật ký hàng ngày, tuy nhiên tệp nhật ký kết quả từ người nghe này rất khó cho người hỗ trợ hoạt động để sử dụng như các mục nhật ký không được hiển thị tốt và các tài liệu xml lớn đóng góp vào sự nhầm lẫn.

Thực hành tốt nhất trong lĩnh vực này là gì, có vẻ như tôi phải viết một tiện ích mở rộng nhật ký WCF tùy chỉnh có vẻ quá mức cần thiết để giải quyết thiếu tính năng cuộn tệp nhật ký trong System.Diagnostics. Trình nghe/người ghi nhật ký XmlWriterTraceListener.

Tôi cũng thử nghiệm một kịch bản để dừng ứng dụng và đổi tên tệp nhật ký nhưng điều này dường như không thể thực hiện được vì trên Windows tiện ích handle.exe và openfile không thể đóng tệp được mở qua chia sẻ mạng không thể đổi tên/di chuyển tệp nhật ký cũ nếu ai đó duyệt qua một mạng chia sẻ. Sẽ đăng câu hỏi riêng về điều đó ngay.

Xin cảm ơn, Matt.

+0

Mặc dù có thể thực hiện được, bạn không phải bật theo dõi WCF tất cả các lần. Nó được thiết kế như một phương pháp xử lý sự cố và có tác động đến hiệu suất. Vô hiệu hóa nó trong môi trường sản xuất là một thực hành tốt nhất. –

Trả lời

9

Bạn có thể tự phát triển hoặc sử dụng một chuyên ngành hiện có XmlWriterTraceListener hoặc sử dụng cơ chế nhật ký truy tìm vòng tròn.

Có một thực hiện chuyên môn của XmlWriterTraceListener mà thực hiện cuốn nhật ký truy tìm trên CodeProject:

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

Với tròn tracing bạn có hai tập tin đó có thể mỗi cửa hàng lên đến nửa tổng mong muốn dữ liệu trong trace log . Trình nghe sẽ tạo một tệp và ghi vào tệp đó cho đến khi nó đạt tới giới hạn một nửa kích thước dữ liệu, tại thời điểm đó nó chuyển sang tệp thứ hai. Khi người nghe đạt đến giới hạn cho tệp thứ hai - nó sẽ ghi đè tệp đầu tiên có dấu vết mới.

http://msdn.microsoft.com/en-us/library/aa395205.aspx

+0

Cảm ơn Sergio, bạn thực sự biết WCF của bạn hoặc khả năng tìm kiếm trên web của bạn vượt xa tôi. Hoặc có thể, nhiều đánh giá cao. Cả hai giải pháp đều khả thi. Không chắc tôi sẽ đi đâu. Tôi có thể thử cả hai. – MattG

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