2011-02-11 6 views
26

내 프로젝트에서 로깅 라이브러리를 사용하고 엔터프라이즈 로깅 블록 대 NLog 대 log4net을 고려해야합니다. 비교에 대한 링크를 찾았지만 그 중 대부분은 log4net의 긴 버전에 대한 새로운 버전이없는 것과 같은 꽤 오래되고 불만스러운 것이 었습니다.엔터프라이즈 로깅 블록 대 NLog 대 log4net

누구나 사용하기 쉽고 구성이 쉽다는 제안이 있습니다 , 성능, 확장 성 등 현재 데이터를 기반으로합니다.

+4

이 답변을보십시오 : http://stackoverflow.com/questions/710863/log4net-vs-nlog/2121341#2121341 –

답변

10

저는 개인적으로 log4net을 좋아합니다. 빠르고, 안정적이며 설정이 가능합니다 (맞춤형 appender 등으로 확장하기가 쉽습니다).

새로운 릴리스가 없어서 고민하지 않아도됩니다. 내 생각에 코드 기반이 안정적이며 필요한 기능을 포함하고 있음을 증명합니다. 결국, 나는 로깅을 무엇보다 안정적으로하고 싶다.

여기에 slightly similar question입니다. 아마도 거기에서 나온 답변 중 일부를 사용할 수도 있습니다.

+2

NLog를 사용해 보셨습니까? – Michael

+3

[This guy] (http://www.alteridem.net/2010/11/04/why-i-switched-from-log4net-to-nlog/)는 Log4Net에 많은 버그가 있으며 자체 테스트 스위트가 많이 실패했습니다. 상황이 개선되었을 수도 있지만, .NET4 호환 릴리스에 소요되는 시간과 관련하여 아래의 문제를 기반으로 안정적으로 호출하기를 주저합니다. –

+0

@ Scott : 매우 오래된 게시물입니다. 이제 log4net은 다시 개발 중입니다. 예를 들어 현재 버전은 2015-03입니다. 그래서 이것은 잘못된 주장입니다. – VikciaR

2

나는 그것들이 모두 매우 유사하고 능력이 있다고 느낍니다. 엔터프라이즈 라이브러리 로깅 블록을 사용한 이후로 수년이 지났지 만 그 당시에는 괜찮 았습니다. NLog & log4net 모두 견고합니다.

타사 라이브러리를 하나 이상 선택하는 한 가지 이유는 제 3 자 라이브러리 통합입니다. 예를 들어, 당신이 NHibernate 또는 Quartz 나 log4net을 사용하는 다른 라이브러리를 사용한다면, 그것은 당신의 선택을 운전할 것입니다.

6

Common.Logging을 사용하는 경우 "사용할 어떤 로거"결정을 연기 할 수 있습니다. Log4net, nlog, System.Diagnostics.Debug로 이동해야하는 로깅을 구성 할 수있는 로깅 래퍼입니다. Enterprise Logging Block을 모르겠다. 공통 로깅을위한 "Enterprise Logging Block"플러그인이 있는지 모르겠다.

+0

해당 링크는 업데이트되지 않습니다.대신 https://github.com/net-commons/common-logging에 링크해야합니다. –

+0

@Rosidi님께 감사드립니다. http://netcommon.sourceforge.net/에서 링크를 업데이트했습니다. github.com/net-commons/common-logging – k3b

18

큰 프로젝트에서 사용하기 위해 log4net 및 NLog를 평가했습니다. 둘 다 비슷한 인터페이스를 가지고 있으며 구성이 다양합니다.

NLog가 더 잘 유지되는 것 같습니다. log4net과 .Net4의 비 호환성은 log4net에서 꽤 오랫동안 해결되지 않았습니다. Nlog에는 구성 파일 편집을위한 Visual Studio 용 NuGet Package와 Xml Schema와 같은 '종소리와 휘파람'이 더 있습니다.

우리는 log4net에 대해 훨씬 더 나은 성능을 측정했기 때문에 log4net을 결정했습니다. 간단한 테스트로 파일과 네트워크 로그 뷰어 (log2Console)에 10000 개의 로그 메시지를 작성하면 log4net의 성능이 10 배 향상되었습니다! 구성 파일에서 튜닝을하지 않았으므로 최소한의 구성으로 파일과 notwork 로거가 사용되었습니다. 프로젝트의 일반적인 로깅 설정을 사용하여 직접 확인해야합니다.

+25

프로파일 러를 살펴 보았습니다. 문제는 로거의 기본 설정에있는 것 같습니다. . log4net은 로그 파일을 기본값으로 유지하고 NLog는 기본값으로 유지합니다. NLog를 적절하게 구성하면 log4net과 동일한 성능을 보입니다. –

+2

나는 로거 성능에 대한 상세한 분석을보고 싶다. 내가 본 대부분의 논의는 제한된 수의 개인 테스트 케이스를 중심으로 진행되는 것 같다. Log4Net에 비해 NLog가 상당히 빠르다고 많은 사람들이 들었지만 그 중 누구도 숫자를 제공하지 않았습니다. 둘 다 EntLib 로깅보다 빠릅니다. –

4

종종 간과되는 또 다른 차이점은 NLog가 BSD이고 log4net이 Apache 라이선스를 얻는 것입니다. ELB는 MS-PL (Microsoft의 오픈 소스 버전)입니다. 대부분의 경우 중요하지 않을 수도 있습니다.

+0

BSD 라이센스와 Apache 라이센스의 차이점은 무엇입니까? 나는 Thrift와 Zeroc 라이센스에서도이 차이가 발생했다고 생각합니다. – GutterStink

+0

그들은 모두 아파치가 더 상세하고 (따라서 복잡한) 제한적인 면허와 꽤 유사합니다. 그다지 이해하지는 않지만 한가지 중요한 차이점은 아파치 라이선스를 사용하면 코드에 대한 변경 사항을 명시 적으로 기술해야한다는 것입니다. – nawfal

관련 문제