Một số người đang sử dụng ELMAH thay vì log4net. Điều gì làm cho nó tốt hơn?
Tôi đã tìm hiểu về ELMAH trong câu trả lời cho câu hỏi Stack Overflow Làm cách nào để đăng nhập C #?
Một số người đang sử dụng ELMAH thay vì log4net. Điều gì làm cho nó tốt hơn?
Tôi đã tìm hiểu về ELMAH trong câu trả lời cho câu hỏi Stack Overflow Làm cách nào để đăng nhập C #?
Câu trả lời:
ELMAH phục vụ mục đích theo dõi lỗi và ngoại lệ cho các ứng dụng web của bạn và cho phép bạn dễ dàng ghi lại hoặc xem các ngoại lệ đó thông qua nhiều cơ chế khác nhau (SQL, RSS, Twitter, tệp, email, v.v.). Nếu bạn không có xử lý ngoại lệ tích hợp, ELMAH rất có thể sẽ giúp bạn có được những gì bạn đang tìm kiếm về xử lý ngoại lệ trong môi trường ứng dụng web.
Log4net cũng có thể được sử dụng để ghi ngoại lệ, tuy nhiên, bạn có thể cần cuộn các trình xử lý của riêng mình để cắm vào ứng dụng web của bạn. Log4net sẽ tỏa sáng trên ELMAH nếu bạn cần thực hiện các kiểu ghi thông tin khác vì log4net là một khung ghi nhật ký có mục đích chung. Log4net cũng có thể được sử dụng trong hầu hết mọi ứng dụng .NET.
Log4Net là một khung ghi nhật ký có mục đích chung với một API được sử dụng trong ứng dụng của bạn (web, bảng điều khiển, dll, v.v.).
logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");
ELMAH là một plugin IIS không phô trương đặc biệt để ghi các ngoại lệ trong ứng dụng web. Bạn sẽ không thấy tham chiếu đến ELMAH trong ứng dụng của mình, nó không có API mà bạn tương tác. Nó sử dụng các điểm mở rộng của mô-đun và trình xử lý IIS để bắt kịp hành vi. Ngoài ra, nó có giao diện người dùng web để xem các lỗi đã xảy ra trong ứng dụng web của bạn. Log4Net không có giao diện người dùng, chỉ có nhiều ổ chìm nhật ký (Appenders) có thể gửi thông báo nhật ký của bạn tới những thứ như tệp nhật ký, máy chủ nhật ký hệ thống, cơ sở dữ liệu, v.v.
Sự khác biệt chính là ELMAH ghi nhật ký các ngoại lệ ứng dụng chưa được xử lý; log4net ghi lại bất cứ điều gì bạn yêu cầu nó ghi nhật ký. Bạn có thể định cấu hình log4net để ghi nhật ký các ngoại lệ không được xử lý, nhưng ELMAH nắm bắt được vô số thông tin hữu ích.
ELMAH hoạt động bằng cách tạo một mô-đun HTTP gắn vào các sự kiện lỗi và sau đó ghi nhật ký. Điều này có thể dễ dàng bị cản trở và phá vỡ bởi thiết kế xấu. Log4Net có thể yêu cầu công việc bổ sung trả trước nhưng nếu bạn sử dụng khung AOP và áp dụng nó trong lớp của mình hoặc thậm chí cả assembly, bạn có thể đạt được việc ghi ngoại lệ tốt hơn nhiều với rất ít mã và nỗ lực.
ELMAH chỉ hoạt động nếu nó có quyền truy cập vào HttpContext mà khó có thể đạt được trong các dịch vụ WCF. Vì vậy, dù sao thì bạn cũng sẽ sử dụng một số trình ghi nhật ký khác trong WCF. Tại sao không chỉ sử dụng một giải pháp phổ biến hơn.
ELMAH được sử dụng đặc biệt cho các ứng dụng web trong khi log4net được sử dụng trên cả ứng dụng web và Windows. ELMAH có nhiều ưu điểm hơn log4net trong ứng dụng web.
ELMAH rất mạnh mẽ, nhưng cũng rất cụ thể trong những gì nó làm. Nó thực hiện rất nhiều công việc cho bạn, trong khi tôi tin rằng Log4Net yêu cầu bạn thực hiện việc xử lý lỗi và ghi nhật ký.