2012-06-25 32 views
5

Câu hỏi của tôi bắt nguồn từ câu hỏi this, trong đó một trong các nhận xét cho thấy cấp nhật ký DEBUG có độ mịn lớn hơn TRACE. Nhìn vào những gì TRACE và DEBUG có nghĩa là trong .NET, điều này có vẻ hợp lý, vì, theo định nghĩa, DEBUG (như một khái niệm) không bao giờ được thấy trong sản xuất. Đây có lẽ là lý do tại sao chúng không được sử dụng như một loại sự kiện trong Thư viện doanh nghiệp. Mặt khác, tất cả các triển khai khác mà tôi biết (log4net, nlog, common.logging) đều có TRACE ở mức tốt hơn DEBUG. Tức là, một ứng dụng đang chạy ở mức đăng nhập DEBUG sẽ không viết nhật ký TRACE.Cấp độ nhật ký: Bạn có cân nhắc DEBUG tốt hơn TRACE không?

Chúng tôi cần triển khai khung nhật ký của riêng mình và tôi đã tự hỏi liệu có nhiều người hơn ở đó nghĩ rằng DEBUG thực sự phải là cấp nhật ký "spam" nhất? Hay bạn sẽ coi đây là một sai lầm nếu khuôn khổ mới của chúng tôi sẽ cung cấp một số sự quen thuộc dễ sử dụng cho các nhà phát triển mới, v.v ...?

Cảm ơn.

Trả lời

4

Hãy nhớ rằng log4net xuất phát từ thế giới Java và NLog lấy nhiều ý tưởng từ log4net - vì vậy Trace và Debug sẽ khác nhau đối với các khung đó vì chúng không dựa trên quan điểm thế giới của trình thiết kế khung công tác .NET. trong không gian tên System.Diagnostics.

Tôi khuyên rằng Trace in .NET đồng nghĩa với Debug trong thế giới .NET, khi bạn bật truy tìm (thông qua chỉ thị trình biên dịch TRACE hoặc trong web.config) để hiển thị thông tin Debug. Rõ ràng là trong NLog và Log4Net mức độ nghiêm trọng của thông tin có thể được hiểu là hơi khác nhau, nhưng cả hai đều sẽ được sử dụng để theo dõi lỗi, chứ không phải lỗi hệ thống, vì vậy về cơ bản chúng có cùng ý nghĩa.

+0

Vì vậy, nếu bạn triển khai khung đăng nhập của riêng mình, bạn chỉ có một cấp độ (như Verbose) trong Entlib)? – Werner

+0

@Werner yes chắc chắn! Thông tin, Lỗi, Cảnh báo giống như .NET. Các mức bổ sung dựa trên java có ý nghĩa đối với các hệ thống giao dịch quan trọng về kinh doanh hoặc an toàn, nhưng đối với hầu hết các nhu cầu của mọi người là quá mức cần thiết. –

4

Tôi đồng ý với TRACE là tốt hơn DEBUG.

Ví dụ: Nếu tôi sử dụng PostSharp để thêm báo cáo khai thác gỗ tự động cho mỗi lời gọi phương thức trong ứng dụng của tôi, tôi muốn mã này được tiêm vào đầu mỗi phương pháp:

if (Log.IsTraceEnabled) 
    Log.TraceFromat("Method {0} args {1}", method, string.Join(",", args)); 

Đó là, tôi giải thích mức "TRACE" khi giúp tôi theo dõi cuộc gọi thông qua ứng dụng, trong khi DEBUG đang viết thông tin giúp nhà phát triển gỡ lỗi chương trình hành vi. Không biết điều đó có hợp lý không?

+0

Có điều đó hợp lý. Trên thực tế, hầu hết các nhà phát triển ở đây đều nhìn thế giới như thế. Nhưng đó có thể là trùng hợp ngẫu nhiên, và chúng tôi không muốn nghĩ ra điều gì đó sẽ bị hiểu nhầm bởi 8 trong số 10 nhà phát triển :) – Werner

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