2009-10-28 5 views
1

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

Log4net 기능 (web.config 근처에 log4net.config를 설치 했는데도 문제가 없습니다.)에 문제가 없지만 log4net을 타이머 작업에서 초기화하는 방법은 전혀 없습니다. IIS가 아니라 OSWTIMER).

  1. 경우 log4net.config 저장하고 어떻게이 작업에 전달합니다

    은 누군가가 나에게 질문에 대한 답을 찾는 데 도움 주실 래요?

  2. Execute() 메서드가 호출 될 때마다 log4net을 초기화해야합니까?

고마워요!

답변

2

내가 log4net을 사용했기 때문에 오래 전에 사용 해왔다.하지만 기억이 나면 얼마든지 원하는 곳에 구성 파일을 저장할 수 있었고 log4net이 로거 초기화 중에로드 할 수있었습니다.

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

2) SPJobDefinition (타이머 작업 클래스)이 실행되지 않을 때 데이터베이스에 저장 될 때마다 로거를 초기화해야한다고 생각합니다. 타이머 작업을 데이터베이스에 저장하는 기능은 SPJobDefinition의 기본 클래스 SPPersistedObject에서 가져옵니다. SPPersistedObject에서 상속 된 클래스의 멤버 변수는 데이터베이스에 클래스와 함께 저장해야하며 [Persisted] 특성으로 표시되어야합니다. 하지만 내가 아는 한 영구 객체는 기본 데이터 유형 (int, long, string ...) 일 수 있습니다.

데이터베이스 내에 log4net Logger 오브젝트를 저장하면 작동하지 않거나 적어도 지원되지 않습니다. 따라서 작업이 데이터베이스에서로드 될 때마다 Logger 객체를 다시 초기화해야합니다.

+0

감사합니다. Flo! 매우 도움이됩니다. 하지만 log4net.config (12 하이브 이하라고 가정 해 봅시다)의 경로를 어떻게 전달할 수 있습니까? 나는 셰어 포인트에 익숙하지 만 작업이 다른 컴퓨터에서 실행될 수 있다는 것을 알고 있습니다. –

+0

예, 작업을 실행할 서버를 정의 할 수는 없지만 프런트 엔드 서버에서 확실히 실행됩니다. 구성 파일을 SharePoint 솔루션 (.wsp 파일)을 통해 기능으로 적용하면 팜의 모든 글꼴 끝 서버에 프로 비전됩니다. 따라서 작업은 실행중인 서버에 상관없이 파일에 액세스 할 수 있습니다. – Flo