Sự khác biệt giữa log4net và ELMAH là gì?


108

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 #?


bản sao có thể có của stackoverflow.com/questions/800009/…
empi

Bây giờ lõi .net đã được hình thành, kịch bản có thay đổi không? (elmah không hỗ trợ lõi .net kể từ tháng 1 năm 2018).
Chaitanya Gadkari

Câu trả lời:


92

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.


3
log4net cho phép bạn kiểm soát nhiều hơn.
DarthVader

6
Bạn có thể tận dụng tối đa cả hai thế giới bằng cách sử dụng ELMAH Appender cho log4net. Chỉ cần ghi lại những gì bạn thích (gỡ lỗi, thông tin, cảnh báo, lỗi) bằng log4net nhưng lưu trữ nó trong ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

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.


23
Một điều chỉnh, Elmah có Api mà nhà phát triển có thể tương tác. Ví dụ, tín hiệu đạt được thông qua Elmah Api.
Ed DeGagne

8
Một sự điều chỉnh khác? ELMAH là một .NET HttpModule / HttpHandler. Nó KHÔNG phải là một plugin IIS. ARR là một plugin. Không phải ELMAH.
Maxime Rouiller

Phản ứng của bạn với các bình luận là gì?
Peter Mortensen,

36

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.


1
ELMAH nắm bắt được vô số thông tin hữu ích, nếu bạn định cấu hình đúng cách. trong cùng một khoảng thời gian, bạn có thể làm tương tự với log4net với nhiều quyền kiểm soát hơn.
DarthVader

DarthVader - bạn có cấu hình log4net mẫu có chức năng tương tự không?
JasonD

5
ELMAH nắm bắt vô số thông tin hữu ích mà không cần cấu hình. Với cấu hình bổ sung, nó sẽ xử lý cả ngoại lệ chưa xử lý và ngoại lệ đã xử lý.
Trevor de Koekkoek 16/12/12

5

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.



1

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.


5
Những ưu điểm đó là gì? Tôi sẽ làm ASP.NET sớm, vì vậy tôi muốn biết ý kiến ​​có học của bạn. Tôi vẫn đang ăn xin trong .NET, vì vậy tôi khó hiểu hơn những gì họ đang nói trên trang web của họ.
IAdapter

Bạn có thể xem báo cáo ngay cả khi không viết bất kỳ mã nào. Xem các tính năng của elmah tại đây code.google.com/p/elmah
Adeel

Elmah rất hạn chế và "avantage" duy nhất là các báo cáo nhưng nó chỉ giới hạn ở các ứng dụng web có quyền truy cập vào HttpContext. Bạn có thể yêu cầu các trình ghi nhật ký khác ghi dữ liệu vào nhiều nguồn khác có thể được báo cáo.
Dustin Davis

0

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ý.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.