문제

기능과 타이머 작업으로 구성된 사용자 정의 SharePoint 솔루션을 개발하고 있습니다 (FeatureActivated의 기능에 의해 생성됨). 내 솔루션에서는 로깅에 log4net을 사용하고 싶습니다 (ULS에 대해 알고 있습니다).

기능 자체에 log4net이 있으면 모든 것이 정상입니다 (Web.config 근처에 log4net.config를 배치하면 모두 괜찮습니다). 그러나 타이머 작업에서 Log4Net을 초기화하는 방법을 완전히 모르겠습니다 (IIS가 아니라 실행되는 것으로 간주됩니다. Oswtimer).

누군가 질문에 대한 답을 찾도록 도와 줄 수 있습니까?

  1. log4net.config를 어디에서 저장하고 어떻게 작업에 전달합니까?
  2. execute () 메소드가 호출 될 때마다 log4net을 초기화해야합니까?

감사!

도움이 되었습니까?

해결책

내가 log4net을 사용한 지 얼마되지 않지만 제대로 기억한다면 원하는 곳에 구성 파일을 저장하고 Logger의 초기화 중에 로그 4Net을로드하도록 할 수 있습니다.

1) 구성 파일을 저장하기에 좋은 장소는 12 개의 두드러기 내의 폴더입니다. 아마도 당신의 기능의 폴더 일 것입니다. 이 파일의 경로가 변경되지 않으므로 로거로 쉽게 참조 할 수 있어야합니다.

2) 매번 로거를 초기화해야한다고 생각합니다. spjobdefinition (타이머 작업 클래스)는 실행되지 않을 때 데이터베이스 내에 저장됩니다. 데이터베이스에 타이머 작업을 저장하는 기능은 SPJOBDEFINITION의 기본 클래스에서 나옵니다. sppersistedobject. 데이터베이스의 클래스와 함께 저장 해야하는 sppersistedObject에서 상속 된 클래스의 멤버 변수는 [Persisted] 기인하다. 그러나 내가 아는 한 지속 된 객체는 기본 데이터 유형 (int, long, string, ...) 일 수 있습니다.

따라서 데이터베이스 내에 LOG4NET LOGGER 객체를 저장하는 것은 작동하지 않거나 최소한 지원되지 않습니다. 따라서 작업이 데이터베이스에서로드 될 때마다 로거 객체를 다시 초기화해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top