2009-03-16 34 views
8

Tôi đang xem một trang asp.net mới trong 3.5 hoàn toàn không có lỗi xử lý hoặc ghi nhật ký. Một số tùy chọn tốt cho việc ghi nhật ký và xử lý lỗi là gì? Tôi đã sử dụng Log4Net trên khuôn khổ 1.1 nhưng nghe có những lựa chọn có khả năng tốt hơn trong 3.5.ASP.NET Logging - log4net hoặc theo dõi sức khỏe?

Trả lời

8

Một tùy chọn là ELMAH. Tôi hỏi một câu hỏi về nó ở đây: ASP.NET Error Handling.

Kể từ đó, tôi đã thực hiện một phiên bản được sửa đổi một chút của nó và việc ghi nhật ký cộng với e-mail rất tuyệt vời và dễ dàng tích hợp qua tệp web.config.

+0

Tôi làm cách nào để bảo mật trang nhật ký của mình? – Caveatrob

+0

Đó là một phần của "sửa đổi" của tôi. Tôi không muốn bất kỳ thông tin đăng nhập nào bị lộ ra, vì vậy tôi đã tưới nó xuống để chỉ ghi lại thông tin vào cơ sở dữ liệu và gửi e-mail cho tôi. Sau đó, khi tôi nhận được một e-mail, tôi có thể xem xét nhật ký cơ sở dữ liệu. Tôi vẫn chưa yêu cầu xem từ xa. – NYSystemsAnalyst

+2

Scott Hanselman cũng có một bài đăng tốt về việc bắt đầu và hoạt động với ELMAH: http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx –

4

Nếu bạn đang sử dụng để log4net, gắn bó với những gì bạn biết. Thật dễ dàng, nhanh chóng và hoạt động tốt. Tôi đã sử dụng nó trong nhiều năm trong 1,1, 2,0, và bây giờ 3,5.

-2

Cá nhân, tôi havent thử log4net nhưng thấy thông số kỹ thuật và các ví dụ cho winforms, nhưng tổ chức của tôi được mã hóa công cụ ghi nhớ của chúng ta rằng các báo cáo và các bản ghi lỗi được đánh bắt trong global.asax rằng báo cáo tất cả những gì chúng ta cần để biết về dấu vết ngăn xếp, phiên (nếu có), NVC của biểu mẫu, phiên bản của ứng dụng, URL đã phát sinh lỗi với chuỗi truy vấn và tiêu đề HTTP. Mặc dù tôi nhận thấy rằng không phải tất cả các lỗi đều được ghi lại ở đó; chẳng hạn như các hình thức xác thực hết hạn hoặc hồ bơi ứng dụng khởi động lại/tắt máy hoặc bất kỳ điều gì được báo cáo bởi IIS không được thực thi bởi ứng dụng.

6

Chúng tôi sử dụng hai lựa chọn để khai thác gỗ của chúng tôi: -

ELMAH cho ngoại lệ bất ngờ xử lý

NLog cho dự đoán, tay (debug, thông tin và báo lỗi) thông tin.

ELMAH là một out-of-the-box Plugin tuyệt vời mà sẽ tự động chụp ngoại lệ (từ (trang 404 của không tìm thấy) đến 500 ngoại lệ ném) và đã tích hợp sẵn trong web-ui để hình dung các lỗi này. Vì vậy, đó là một cách thực sự nhanh chóng và hiệu quả để lấy lỗi bất ngờ xảy ra.

Bây giờ NLoglời khen điều này bằng cách phát triển của chúng tôi bằng tay chèn thông tin gỡ lỗi vào mã tại các điểm cụ thể, vì vậy khi chúng ta cần phải nhận được thông tin từ một hệ thống phi locahost, nó rất dễ dàng. Ví dụ, chúng ta rải rác log.Debug(..) mã trong hầu hết các phương pháp của chúng tôi để xem biến cục bộ là gì hoặc giá trị trả lại, v.v. Để biết thêm thông tin quan trọng, chúng tôi sử dụng log.Info(..) .. nhưng sử dụng ít hơn rất nhiều. Cuối cùng, đối với các lỗi nghiêm trọng mà chúng tôi đã bẫy và xử lý, chúng tôi sử dụng log.Error(..) hoặc log.Warn(..) .. thường nằm trong một số phạm vi try/catch. Vì vậy, trên máy chủ thử nghiệm hoặc máy chủ trực tiếp của chúng tôi, chúng tôi bật tất cả trạng thái ghi nhật ký (ví dụ: Debug và cao hơn) nếu chúng tôi cần lấy dữ liệu LOTS, trực tiếp ... hoặc chỉ thông tin quan trọng chung, chẳng hạn như trạng thái Info và cao hơn. Chúng tôi luôn có trạng thái là Warn, Error and Fatal. Trạng thái gỡ lỗi tạo ra rất nhiều dữ liệu, vì vậy chúng tôi chỉ sử dụng ít thôi.

Vì vậy, để tóm tắt, tôi đề nghị bạn sử dụng HAI cách tiếp cận với WebApp của bạn. Elmah cho tuyệt đối không mong muốn lỗi bẫy và NLog cho được mong đợi thông tin và lỗi.

Cuối cùng, NLog là WAAAY dễ sử dụng/làm việc hơn Log4Net. Về cơ bản nó vượt quá nó, IMO.

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