log4net과 ELMAH의 차이점은 무엇입니까?


108

어떤 사람들은 log4net 대신 ELMAH를 사용하고 있습니다. 무엇이 더 나아질까요?

Stack Overflow 질문대한 답변 에서 ELMAH에 대해 알게되었습니다 . C #으로 로그인하려면 어떻게해야합니까?



이제 .net 코어가 그림에 표시되었으므로 시나리오가 변경됩니까? (elmah는 2018 년 1 월 현재 .net 코어를 지원하지 않습니다).
Chaitanya Gadkari

답변:


92

ELMAH는 웹 애플리케이션의 오류 및 예외를 추적하는 목적으로 사용되며 다양한 메커니즘 (SQL, RSS, Twitter, 파일, 이메일 등)을 통해 이러한 예외를 쉽게 기록하거나 볼 수 있습니다. 내장 된 예외 처리가없는 경우 ELMAH는 웹 응용 프로그램 환경에서 예외 처리 측면에서 원하는 것을 얻을 수 있습니다.

Log4net은 예외 로깅에도 사용할 수 있지만 웹 애플리케이션에 연결하려면 고유 한 핸들러를 롤링해야 할 수도 있습니다. Log4net은 범용 로깅 프레임 워크이므로 다른 유형의 정보 로깅을 수행해야하는 경우 ELMAH보다 빛납니다. Log4net은 거의 모든 .NET 응용 프로그램에서도 사용할 수 있습니다.


3
log4net은 더 많은 제어를 제공합니다.
DarthVader

6
이 ELMAH Appender for log4net을 사용하면 두 가지 장점을 모두 활용할 수 있습니다. 그냥 당신이 좋아 (디버그, 정보는 오류 경고) log4net으로하지만 ELMAH의에 저장 로그인 nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

Log4Net 은 애플리케이션 (웹, 콘솔, dll 등) 내에서 사용하기위한 API가 포함 된 범용 로깅 프레임 워크입니다.

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 는 웹 응용 프로그램에서 예외 를 로깅하기위한 눈에 잘 띄지 않는 IIS 플러그인 입니다. 애플리케이션 내에서 ELMAH에 대한 참조가 표시되지 않으며 상호 작용하는 API가 없습니다. 모듈 및 처리기 IIS 확장 점을 사용하여 동작을 추가합니다. 또한 웹 응용 프로그램에서 발생한 오류를 볼 수있는 웹 프런트 엔드가 있습니다. Log4Net에는 프런트 엔드가 없으며 로그 파일, syslog 서버, 데이터베이스 등으로 로그 메시지를 보낼 수있는 다양한 로그 싱크 (Appenders) 만 있습니다.


23
한 가지 수정 사항은 Elmah가 개발자가 상호 작용할 수있는 API를 가지고 있다는 것입니다. 예를 들어, 신호는 Elmah Api를 통해 이루어집니다.
Ed DeGagne

8
또 다른 수정? ELMAH는 .NET HttpModule / HttpHandler입니다. IIS 플러그인이 아닙니다. ARR은 플러그인입니다. ELMAH가 아닙니다.
Maxime Rouiller 2014 년

의견에 대한 귀하의 반응은 무엇입니까?
Peter Mortensen

36

주요 차이점은 ELMAH가 처리되지 않은 응용 프로그램 예외를 기록한다는 것입니다. log4net은 사용자가 기록하는 모든 것을 기록합니다. 처리되지 않은 예외를 기록하도록 log4net을 구성 할 수 있지만 ELMAH는 즉시 사용할 수있는 다양한 유용한 정보를 캡처합니다.


1
ELMAH는 올바르게 구성하면 즉시 사용할 수있는 유용한 정보를 많이 캡처합니다. 같은 시간 동안 더 많은 제어를 통해 log4net으로 동일한 작업을 수행 할 수 있습니다.
DarthVader

DarthVader-동일한 작업을 수행하는 샘플 log4net 구성이 있습니까?
JasonD

5
ELMAH는 구성없이 즉시 사용할 수있는 풍부한 유용한 정보를 캡처합니다. 추가 구성으로 처리되지 않은 예외와 처리 된 예외를 모두 처리합니다.
Trevor de Koekkoek

5

ELMAH는 오류 이벤트에 연결 한 다음 로깅을 수행하는 HTTP 모듈을 생성하여 작동합니다. 이것은 잘못된 설계로 인해 쉽게 방해를받을 수 있습니다. Log4Net은 사전에 추가 작업이 필요할 수 있지만 AOP 프레임 워크를 사용하고이를 클래스 또는 어셈블리 전체에 적용하면 코드와 노력이 거의없이 훨씬 더 나은 예외 로깅을 달성 할 수 있습니다.

ELMAH는 WCF 서비스에서 달성하기 어려울 수있는 HttpContext에 대한 액세스 권한이있는 경우에만 작동합니다. 따라서 어쨌든 WCF에서 다른 로거를 사용하게 될 것입니다. 더 보편적 인 하나의 솔루션을 사용하는 것은 어떨까요?



1

ELMAH 는 웹 응용 프로그램에 특별히 사용되는 반면 log4net 은 웹 및 Windows 응용 프로그램 모두에서 사용됩니다. ELMAH는 웹 애플리케이션에서 log4net보다 더 많은 장점을 가지고 있습니다.


5
그 장점은 무엇입니까? 곧 ASP.NET을 할 것이므로 여러분의 교육적인 의견을 알고 싶습니다. 나는 여전히 .NET에서 시작하기 때문에 그들이 사이트에서 말하는 것을 해석하기가 더 어렵습니다.
IAdapter

코드를 작성하지 않고도 보고서를 볼 수 있습니다. 여기에서 elmah 기능보기 code.google.com/p/elmah
Adeel

Elmah는 매우 제한적이며 유일한 "장점"은 보고서이지만 HttpContext에 액세스 할 수있는 웹 앱으로 제한됩니다. 다른 로거가보고 할 수있는 다른 많은 소스에 데이터를 기록하도록 할 수 있습니다.
Dustin Davis

0

ELMAH는 매우 강력하지만 그 기능도 매우 구체적입니다. 내가 Log4Net이 필요로 생각하면서, 당신을 위해 많은 일을 수행 오류 처리 및 로깅을 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.