[log4net] log4net 대 Nlog

누구나 둘 다 경험이 있습니까? 그들은 서로 어떻게 쌓입니까?

엔터프라이즈 애플리케이션에 로그인하기 위해 그 중 하나를 사용할 계획입니다.

참고 문헌 :

log4net

nlog

편집 : 우리는 nlog 또는 log4net에 대한 기존 종속성이 없습니다.



답변

나는 최근에 다가올 프로젝트를 위해 “일부 loggin 프로토 타입을 만드는”임무를 맡았다. 로깅 프레임 워크 경험이 없었습니다. 나는 며칠 동안 Log4Net, NLog 및 Enterprise Library에서 튜토리얼을 조사하고 장난감 앱 등을 만들었습니다. 3-4 주 후에 돌아와서 응집력있는 데모로 만들었습니다. 바라건대이 중 일부는 당신에게 유용합니다.

우리 프로젝트에 대한 나의 추천은 다음과 같습니다.

  1. 직접적인 종속성을 피하려면 로깅 파사드 (예 : Common.Logging , SimpleLoggingFacade )를 사용하십시오 .
  2. 다른 시설에 Enterprise Library를 사용하면 로깅에도 사용됩니다.
  3. Log4Net에 의존하는 것을 사용하면 Log4Net을 사용하십시오.
  4. 위의 어느 것도 없으면 NLog를 사용하십시오. 내가 선호하는 것.

그것은 다음과 같은 결과를 바탕으로합니다 (의견!) :

  • 3 가지 프레임 워크가 모두 가능하며 정교한 작업을 수행 할 수 있습니다. 우리는 양질의 솔루션을 원하지만 솔직히 초 고성능 또는 60 가지 유형의 이벤트 싱크가 필요하지 않습니다.
  • 3 가지 모두 매우 유사한 기본 개념을 가지고 있습니다.
  • 각각에는 실제로 고급 라우팅 또는 동적 로그 파일 이름, 파일 잘림 등과 같은 멋진 트릭이 있습니다.
  • 3 가지 모두 자신의 방식으로 잘 문서화되어 있습니다.
  • 나와 같은 완전한 새로운 것을 위해, 그들은 처음에 모두 조금 어색했습니다. 기본 사항에는 큰 차이가 없습니다. 나는 그것을 극복했다.
  • 몇 주 후 물건을 다시 방문 할 때, NLog이었다 명확하게 다시 시작하는 가장 쉬운 방법. 나는 그것에 약간의 브러시가 필요했습니다. Log4Net을 사용하여 몇 가지 온라인 예제를 다시 방문해야했습니다. EntLib을 사용하여 튜토리얼을 포기하고 처음부터 다시 시작했습니다.
  • EntLib가 데이터베이스에 로그와 같은 작업을 수행하는 방법을 알 수 없었습니다. 쉽지만 시간 제한을 벗어났습니다.
  • Log4Net 및 NLog는 코드 내 공간이 작습니다. EntLib는 스팸이지만 어쨌든 정면을 사용합니다.
  • 실수로 EntLib를 잘못 구성했으며 런타임에 알려주었습니다. Log4Net은 그렇지 않았습니다. NLog에서 실수로 잘못 구성하지 않았습니다.
  • EntLib에는 멋진 app.config 편집기가 포함되어 있으며 100 % 필요합니다. NLog에는 설정 파일 스키마가 있으므로 “지능형”을 얻을 수 있습니다. Log4Net은 nada와 함께 제공됩니다.

분명히 지금까지 NLog를 좋아합니다. 그러나 다른 솔루션을 사용할 수 있지만 사용하기에는 충분하지 않습니다.


답변

많이 논의되지 않은 주요 고려 사항은 지원 및 업데이트입니다.

1.2.10 버전이 2006 년 4 월 19 일에 게시 된 이후 Log4Net이 업데이트되지 않았습니다 .

반면 NLog는 2006 년부터 적극적으로 지원되어 log4net이 마지막으로 업데이트 될 때 존재하지 않았던 많은 플랫폼을 지원하는 NLog 2.0 을 곧 출시 할 예정입니다 .

  • NET Framework 2.0 SP1 이상, 3.5 및 4.0 (클라이언트 및 확장 프로파일)
  • Silverlight 2.0, 3.0, 4.0
  • .NET Compact Framework 2.0, 3.5
  • 모노 2.x 프로파일

답변

최근에 두 프레임 워크 모두에 대한 경험이 있었기 때문에 각 프레임 워크에 대한 견해를 공유 할 수 있다고 생각했습니다.

기존 웹 응용 프로그램의 로깅 프레임 워크를 평가하라는 요청을 받았으며 다양한 온라인 포럼을 거친 후 NLog (v2.0) 및 log4net (v1.2.11)으로 선택 범위를 좁혔습니다. 내 결과는 다음과 같습니다.

  1. NLog로 설정 / 시작하는 것은 매우 쉽습니다. 웹 사이트에서 시작하기 자습서를 진행하면 끝납니다. 당신은 공정한 아이디어를 얻습니다. 구성 파일은 매우 직관적이므로 누구나 구성을 이해할 수 있습니다. 예를 들어, 내부 로그온을 설정하려면 Nlog 구성 파일의 헤더 노드에서 플래그를 설정합니다. log4net에서는 web.config의 appSettings 섹션에서 다른 플래그를 설정합니다.

  2. log4net에서 내부 로깅은 타임 스탬프를 출력하지 않아 성가시다. Nlog에서는 타임 스탬프가 포함 된 멋진 로그를 얻습니다. 평가에 매우 유용하다는 것을 알았습니다.

  3. log4net의 필터- 이 질문을 더 잘 확인하십시오 -log4net 필터-로그 메시지를 무시하기 위해 작성하고 필터링하는 방법에 대한 답변 / 해결책을 찾으면 알려주십시오. 사용자 정의 필터를 작성할 수 있으므로이 질문에 대한 해결 방법이 있습니다. 그러나 log4net에서 쉽게 사용할 수없는 것.

  4. 성능-저장 프로 시저를 사용하여 약 3000 개의 로그 메시지를 데이터베이스에 기록했습니다. 동일한 메시지를 3000 번 기록하기 위해 간단한 for 루프 (int i = 0; i <3000; i ++ …)를 사용했습니다. 기록의 경우 : log4net AdoAppender는 NLog보다 거의 두 배의 시간이 걸렸습니다.

  5. Log4net은 비동기 어 펜더를 지원하지 않습니다.

로깅 프레임 워크로 NLog를 선택하는 것이 충분했습니다. 🙂


답변

이 스레드에 늦게 도달 한 사용자는 .Net Base Class Library (BCL)를 다시 살펴볼 수 있습니다. TraceSource 클래스 (2005 년경)가 소개 되었을 때 많은 사람들이 .Net 1.1과 .Net 2.0 사이의 변화를 놓쳤습니다 .

TraceSource를 사용하면 엔터프라이즈 응용 프로그램 블록의 오버 헤드없이 로깅, 세분화 된 제어, app.config / web.config의 구성 및 프로그래밍 방식 액세스를 통해 다른 로깅 프레임 워크와 유사합니다.

“log4net vs TraceSource”와 같은 여러 비교가 있습니다.


답변

우리에게 중요한 차이점은 전반적인 성능에 있습니다.

보세요 Logger.IsDebugEnabled테스트에서 NLog와 Log4Net을 NLog는 오버 헤드가 적고 우리가 따르는 것입니다 (대기 시간이 짧음).

건배, 플로리안


답변

먼저 스택의 나머지 부분을보십시오.

NHibernate를 사용하는 경우 Log4Net을 직접 사용합니다. 다른 프레임 워크에는 필요한 다른 특정 로거가있을 수 있습니다.

그 외에는 둘 다 잘 작동합니다.

나는 Log4Net에 스스로 정착했다. 구성하기가 어려울 수 있으며 올바르게 구성되지 않으면 무엇이 잘못되었는지 파악하기가 어렵습니다. 그러나 로거에서 원하는 거의 모든 것을 할 수 있습니다.

Log4Net에 대한 문제가없는 경우 여기에 시작하는 방법에 대해 쓴 기사가 있습니다.
http://elegantcode.com/2007/12/07/getting-started-with-log4net/


답변

.. 데이터베이스 로깅 작업에 Enterprise 라이브러리를 사용했으며 성능 병목 현상으로 인해 NLog로 전환했습니다.

일부 비교 정보 :

http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html