누구나 둘 다 경험이 있습니까? 그들은 서로 어떻게 쌓입니까?
엔터프라이즈 애플리케이션에 로그인하기 위해 그 중 하나를 사용할 계획입니다.
참고 문헌 :
편집 : 우리는 nlog 또는 log4net에 대한 기존 종속성이 없습니다.
누구나 둘 다 경험이 있습니까? 그들은 서로 어떻게 쌓입니까?
엔터프라이즈 애플리케이션에 로그인하기 위해 그 중 하나를 사용할 계획입니다.
참고 문헌 :
편집 : 우리는 nlog 또는 log4net에 대한 기존 종속성이 없습니다.
답변:
나는 최근에 다가올 프로젝트를 위해 "일부 loggin 프로토 타입을 만드는"임무를 맡았다. 로깅 프레임 워크 경험이 없었습니다. 나는 며칠 동안 Log4Net, NLog 및 Enterprise Library에서 튜토리얼을 조사하고 장난감 앱 등을 만들었습니다. 3-4 주 후에 돌아와서 응집력있는 데모로 만들었습니다. 바라건대이 중 일부는 당신에게 유용합니다.
우리 프로젝트에 대한 나의 추천은 다음과 같습니다.
그것은 다음과 같은 결과를 바탕으로합니다 (의견!) :
분명히 지금까지 NLog를 좋아합니다. 그러나 다른 솔루션을 사용할 수 있지만 사용하기에는 충분하지 않습니다.
많이 논의되지 않은 주요 고려 사항은 지원 및 업데이트입니다.
1.2.10 버전이 2006 년 4 월 19 일에 게시 된 이후 Log4Net이 업데이트되지 않았습니다 .
반면 NLog는 2006 년부터 적극적으로 지원되어 log4net이 마지막으로 업데이트 될 때 존재하지 않았던 많은 플랫폼을 지원하는 NLog 2.0 을 곧 출시 할 예정입니다 .
최근에 두 프레임 워크 모두에 대한 경험이 있었기 때문에 각 프레임 워크에 대한 견해를 공유 할 수 있다고 생각했습니다.
기존 웹 응용 프로그램의 로깅 프레임 워크를 평가하라는 요청을 받았으며 다양한 온라인 포럼을 거친 후 NLog (v2.0) 및 log4net (v1.2.11)으로 선택 범위를 좁혔습니다. 내 결과는 다음과 같습니다.
NLog로 설정 / 시작하는 것은 매우 쉽습니다. 웹 사이트에서 시작하기 자습서를 진행하면 끝납니다. 당신은 공정한 아이디어를 얻습니다. 구성 파일은 매우 직관적이므로 누구나 구성을 이해할 수 있습니다. 예를 들어, 내부 로그온을 설정하려면 Nlog 구성 파일의 헤더 노드에서 플래그를 설정합니다. log4net에서는 web.config의 appSettings 섹션에서 다른 플래그를 설정합니다.
log4net에서 내부 로깅은 타임 스탬프를 출력하지 않아 성가시다. Nlog에서는 타임 스탬프가 포함 된 멋진 로그를 얻습니다. 평가에 매우 유용하다는 것을 알았습니다.
log4net의 필터- 이 질문을 더 잘 확인하십시오 -log4net 필터-로그 메시지를 무시하기 위해 작성하고 필터링하는 방법에 대한 답변 / 해결책을 찾으면 알려주십시오. 사용자 정의 필터를 작성할 수 있으므로이 질문에 대한 해결 방법이 있습니다. 그러나 log4net에서 쉽게 사용할 수없는 것.
성능-저장 프로 시저를 사용하여 약 3000 개의 로그 메시지를 데이터베이스에 기록했습니다. 동일한 메시지를 3000 번 기록하기 위해 간단한 for 루프 (int i = 0; i <3000; i ++ ...)를 사용했습니다. 기록의 경우 : log4net AdoAppender는 NLog보다 거의 두 배의 시간이 걸렸습니다.
Log4net은 비동기 어 펜더를 지원하지 않습니다.
로깅 프레임 워크로 NLog를 선택하는 것이 충분했습니다. :)
이 스레드에 늦게 도달 한 사용자는 .Net Base Class Library (BCL)를 다시 살펴볼 수 있습니다. TraceSource 클래스 (2005 년경)가 소개 되었을 때 많은 사람들이 .Net 1.1과 .Net 2.0 사이의 변화를 놓쳤습니다 .
TraceSource를 사용하면 엔터프라이즈 응용 프로그램 블록의 오버 헤드없이 로깅, 세분화 된 제어, app.config / web.config의 구성 및 프로그래밍 방식 액세스를 통해 다른 로깅 프레임 워크와 유사합니다.
"log4net vs TraceSource"와 같은 여러 비교가 있습니다.
먼저 스택의 나머지 부분을보십시오.
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
알다시피, log4net은 응용 프로그램이 실행되는 동안 출력 파일을 잠그므로 삭제할 수 없습니다. 그렇지 않으면 비슷합니다.
따라서 NLog를 선호합니다.
내가 운영하는 오픈 소스 프로젝트에 대한 뻔뻔한 플러그이지만 .NET 로깅 프레임 워크가 더 활발한 것에 대한 활발한 토론을 감안할 때 Serilog에 대한 의무적 인 링크를 게시 할 것이라고 생각 했습니다 .
응용 프로그램 내에서 사용하기 위해 Serilog는 log4net과 비슷합니다 (그리고 크게 그립니다). 그러나 다른 .NET 로깅 옵션과 달리 Serilog는 오프라인 분석을 위해 로그 이벤트 구조를 보존하는 것입니다. 당신이 쓸 때 :
Log.Information("The answer is {Answer}", 42);
대부분의 로깅 라이브러리는 즉시 메시지를 문자열로 렌더링합니다. Serilog도이를 수행 할 수 있지만 { Answer: 42 }
나중에 여러 NoSQL 데이터 저장소 중 하나를 사용하여 값을 기반으로 이벤트를 올바르게 쿼리 할 수 있도록 특성을 보존합니다.Answer
.
우리는 1.0에 가까우며 모든 최신 (.NET 4.5, Windows Store 및 Windows Phone 8) 플랫폼을 지원합니다.
관리되지 않는 코드로도 작동하기 때문에 NLog도 두 번째입니다. log4net과 log4cxx를 함께 사용하는 것이 가능할 수도 있지만 NLog는 관리 코드와 관리되지 않는 코드를 모두 즉시 처리합니다.
또한 로깅 API의 추상화를 만드는 파사드 인 Common.Logging 도 살펴 봤으며 log4net, NLog 및 Entreprise Library를 지원합니다. 나는 그것을 사용할 것이라고 생각하지 않지만 로깅이 비활성화 될 때 (NLog 및 아마도 다른 사람들과 공유되는 기능) 람다를 사용하여 성능을 향상시키는 방법을 좋아합니다.
Microsoft Enterprise Library 로깅 블록을 고려할 수도 있습니다 . 멋진 디자이너와 함께 제공됩니다.
내 경험에 따르면 SmartInspect 는 NLog와 log4net을 모두 능가합니다.
사용이 매우 쉽고 문서가 훌륭하며 이전에 기록 된 메시지를보고 필터링 할 수 있습니다. 하며 대화 형 로그 뷰어를 사용하여 를 .
내가 좋아하는 것 중 하나는 Chrome의 브라우저 탭과 같은 데이터 탭보기입니다. 각 탭은 서로 다른 필터링 된 로그보기를 제공 할 수 있습니다.