2011-04-24 5 views
1

프로덕션 서버에서 실행되는 C# 3.5 winforms 데스크톱 앱이 있습니다. 로깅을 위해 log4net을 사용합니다.log4net xml의 로깅 수준 변경

요구 사항은 사용자가 런타임에 로깅 수준을 전환 할 수 있어야한다는 것입니다. 예를 들어, 수준이 "INFO"수준으로 전환 된 경우 응용 프로그램 shud는 정보 수준 로그 만 씁니다. 또한 비즈니스에서는 서버를 prod하고 log4net xml 파일을 편집하여 로그 수준을 변경하려고하지 않습니다.

다음 방법 중 어느 것이 좋을까요? 아니면 다른 더 나은 방법이 있습니까? 사용자가 로그 수준을 변경할 수있는 "관리자"winform이 있습니다. 사용자가 데스크톱에서 app에 로그온합니다.

1.And 다음 응용 프로그램에서 log4net api를 사용하여 네트워크 경로에서 log4net xml을로드하고 UI에서 제공된 새 레벨로 변경 사항을 저장 한 다음 새 레벨 로거 클래스를 다시 인스턴스화 할 수 있습니다.

또는 백엔드에서

2.Have이 새 테이블 .... 사용자 이름, 현재 수준의 ID와 함께 수준 ID와 Names.And 다른 테이블 "B"로 표 "A"를 찾아 날짜 수정.

표 B의 UI 화면에서 제공된 레벨을 업데이트하십시오. .net의 Sqlcache 종속성을 사용하면 테이블 B의 값이 변경 될 때마다 새 레벨 로거 클래스를 다시 인스턴스화하십시오.

감사합니다.

답변

1

아마도 1-st 옵션을 선택하면 훨씬 쉬울 것입니다.

log4net 구성 파일을 로컬 사용자 컴퓨터에 복사 할 수 있습니다. 사용자가 레벨을 변경하면 xml에 로컬로 저장합니다. 당신은, 당신은 로거를 통해 UR 대응을위한

+0

답장을 보내 주셔서 감사합니다. 미안하지만, 내 질문에 명확하지 않은 경우 코드가 서버 측에서 실행됩니다. 따라서 서버 측에서만 로그 xml 파일을 변경해야합니다. – user74042

1

기본적으로 log4net은 구성 파일에 파일 변경 알림을 걸어 놓고 파일이 업데이트되면 자동으로 다시 구성합니다. 그래서, 나는 당신의 UI가 설정 파일을 해킹하도록하는 것이 가장 적은 일이라고 생각합니다. 가장 쉬운 방법은 log4net xml 구성 파일의 로그 수준을 변경하기위한 간단한 UI로 서버에 응용 프로그램을 설치하여 서버에 작은 웹 응용 프로그램을 설치하는 것입니다.

+0

감사를 재 초기화해야하는 log4net의 설정

log4net.Config.XmlConfigurator.ConfigureAndWatch 

마지막으로의 변화를 추적하기 위해이 방법을 사용할 수 있습니다 ... 음, 우리는 따라 [웹 애플리케이션이 안된다 비즈니스 요구 사항] .. 그래서, 내가 ur1을 사용하여 더 나은 첫 번째 접근 방식을 사용하여 말하길 믿습니다 [log4net api를 사용하여 XML을 편집] 대신 Sqlcachedependency..right? – user74042

+0

log4net은 파일의 변경 사항을 감시합니다. 초기화 할 때와 app.config/web.config 파일을 사용하지 않고 자체 설정 파일을 사용하는 경우에만 알려줍니다. 위의 옵션 하나 (파일 편집 및 바꾸기)와 함께이 방법을 사용하는 것이 좋습니다. 이것은 가장 합리적인 것입니다. 좋은 대답은 +1. – IAmTimCorey

관련 문제