2012-12-13 2 views
2

Azure 클라우드 기반 응용 프로그램이 수행하는 로깅 수준을 동적으로 제어 할 수 있기를 원합니다. 이렇게하려면 공유 log4net 기반 DLL을 만들고 있습니다.클라이언트의 app 또는 web.config에 의존하지 않는 dll에서 log4net을 어떻게 사용합니까?

log4net 로깅에 대한 많은 질문이 있지만 거의 모든 설정에는 설정 파일 또는 기타 텍스트 파일의 설정 입력 및 조작이 포함됩니다. Azure 클라우드에서 web.config를 변경하면 다시 배포해야합니다. 관리 포털에서 응용 프로그램으로 웹 서비스 호출을 작성하여 로깅을 변경하려고합니다.

또한 여러 응용 프로그램이 있고 각 구성 파일에 Appender 세부 정보와 같은 동일한 설정을 저장하지 않고 새 log4net 기반 DLL을 사용하고 싶습니다. 응용 프로그램은 동일하고 일관된 데이터를 기록합니다.

Azure 진단을 사용하지 않으려는 이유는이 대규모 사용자 기반 응용 프로그램의 성능이 저하 될 수 있기 때문입니다. 또한 로깅 및 진단을 최소한으로 (또는 완전히 비활성화) 줄이고 생산 문제를 디버깅하거나 성능의 스냅 샷을 찍기 위해 다양한 수준으로 만 활성화하려고합니다. 내 애플 리케이션을 재배포하고 싶지 않아.

가장 좋은 방법은 무엇입니까?

+0

감사 : 여기에 대한 자세한 내용은

확인 http://stackoverflow.com/questions/769983/how-to-configure-log4net-programmatically-from -scratch-no-config –

답변

6

내가 웹 /의 app.config 파일뿐만 아니라 다른에서 log4net 구성을 저장하지 않는 것이 좋습니다 다른 서버처럼 로그인하고 현장에서 설정 파일을 변경

외부에서 업데이트 할 수있는 파일 (예 : 블롭 저장소)이며 서비스 구성에서 동적으로 변경할 수있는 위치 또는 재배포하지 않고 내용을 변경할 수있는 위치.

log4net.Config.XmlConfigurator.Configure 메소드를 살펴보십시오. 매개 변수없이 매개 변수를 호출하는 대신 여러 가지 매개 변수를 전달할 수 있습니다 (기본 매개 변수는 app.config 파일에서 읽지 않음).

원하는 것을하기위한 한 가지 방법은 Azure 저장소에 저장된 구성 파일의 공개 URL을 해당 구성 방법에 전달하는 것입니다. 구성 파일의 위치는 서비스 구성에서 제어 할 수 있습니다.

구성 파일을 공개하지 않으려면 저장소의 개인 위치에서 XML 구성 판독기를 구현하고 대신 XML 문서를 Configure() 메서드에 전달할 수 있습니다. 이 존 M 겐트에 http://logging.apache.org/log4net/release/manual/configuration.html

+0

나는 똑같은 말을하려고했다. LOL :) –

-1

나는이 방법을 생각 할 수 있습니다 단지 만발한 배포 프로세스를 할 필요없이 서버의 파일을 업데이트

를 사용하여 웹 배포를. 당신의 푸른 인스턴스에서 RDP를 사용하고 방금

+0

여전히 각 응용 프로그램의 web.config 내 appender 세부 정보를 복제해야합니다. 모든 애플리케이션에 공통된 위치에 appender 세부 정보를 저장하려고합니다. –

+0

죄송합니다. 질문에 대한 오해를해서 죄송합니다. 웹 설정에서 log4net 구성을 이동하는 방법에 대한이 게시물을 참조하십시오. 그런 다음 모든 웹 구성을이 동일한 파일을 가리 키도록 업데이트 할 수 있습니다. 그런 다음 하나의 파일을 변경하면 모든 앱에 영향을 미칩니다. http://stackoverflow.com/questions/445976/log4net-config-in-external-file-does-not-work –

+0

내가 언급 한 접근법 중 어느 것도 추천하지 않습니다.업그레이드 서비스, 역할 재활용, 게스트 OS 업데이트/경로, 하드웨어 장애 및 다른 인스턴스로의 현재 인스턴스 이동으로 인해 두 가지 방식으로 변경된 사항이 모두 손실되기 때문입니다. – astaykov

관련 문제