2013-03-20 4 views
4

나는 온라인 연구를 통해 발견 내 Windows 서비스를 로깅을위한 다음과 같은 코드가 있습니다. 의는 아래와 같이 초기화되고 바로 전에 내 서비스 클래스의 내부에서 수행. 로그인 할 때를위한로깅 Windows 서비스는

public GBBInvService() 
     { 
      InitializeComponent(); 
      if (!System.Diagnostics.EventLog.SourceExists("MyLogSource")) 
       System.Diagnostics.EventLog.CreateEventSource("MyLogSource", 
                     "MyDoLog"); 
      eventLog1.Source = "MyLogSource"; 
      eventLog1.Log = "MyDoLog"; 
     } 

코드 : 나는 그러나 우리의 컨설턴트가 반대 권고 한

eventLog1.WriteEntry("GBBInvService Service Started"); 

. 아래에 그의 의견 :

나는 서비스가 실행시에 이벤트 소스를 만들 필요가 없도록 것입니다. 이를 위해서는 서비스가 높은 권한 (즉, 실제로 필요한 것보다 더 많은 컴퓨터에 대한 액세스 권한)으로 실행되어야합니다. Windows 이벤트 로그 소스를 설정하는 것은 실제로 설치 시간 작업입니다. 서비스 설치 관리자와 함께 프로젝트 설치 관리자 파일에 이벤트 로그 설치 관리자를 추가 한 다음 이벤트 원본을 항상 추가 할 수 있습니다.

이 조언의 문제점은 내가 찾을 수 없었던 것입니다. 로그가 프로젝트 설치 프로그램 파일에 작성되는 예제. 또한이 로그 생성 부분을 프로젝트 설치 프로그램으로 옮겨 보았지만 내 웹 서비스 cs 페이지에서 eventlog1을 호출하거나 작성할 수는 없었습니다. 그는 또한 log4net을 제안했지만, 그것은 나에게 새롭고 유지를 파악하기가 꽤 복잡한 것이다. 나는 아직도 서비스는 단지 내 첫 번째 Windows 서비스 프로젝트를 완료 한 및 log4net에 내 서비스 CS 페이지 또는 머리부터 그것을 작성, 프로젝트 설치에 로그를 작성하는 방향으로 모든 종류의 매우 감사하게 될 것입니다 창에 아주 새로운 해요. 귀하의 컨설턴트가 올바른지

답변

6

, 서비스 내에서 그렇게 나쁜 생각입니다. 여기

는 설치 프로그램에서 이벤트 소스를 생성하는 방법은 다음과 같습니다

http://blogs.msdn.com/b/helloworld/archive/2008/12/11/creating-an-event-log.aspx?Redirected=true

짧은 버전 : 서브 클래스 설치하고 서브 클래 싱 된 설치 프로그램의 생성자에서 이벤트 로그 소스를 만듭니다.

링크에서

UPDATE : 서비스 설치 프로그램이 실행

후, 로그는 '등록',하지만 아직 만들어지지 않습니다. 그것을 창조하기 위하여는, 1 개의 사건은 쓰여 져야한다. 제한된 사용자 계정을 사용하여 서비스를 실행하는 경우 로그를 만들 필요가 있으므로 해당 계정에 첫 번째 로그를 쓸 보안 권한이 충분하지 않을 수 있습니다.

예제 코드는 하나의 이벤트가 기록되는 표시되지 않습니다. 당신이 그렇게하고 있는지 확인하십시오.

서비스를 설치하는 경우, 사용자가

당신이 관리자로 설치 프로그램을 실행해야합니다 관리자로 설치 프로그램을 실행해야합니다.

서비스가 시작되지 것입니다 : 당신의 코멘트에서

.

이벤트 로그가 시작되지 않는 이유를 확인하십시오. 아마도 Exception을 던지고있는 것 같습니다. 설치 프로그램에서 하나의 이벤트를 작성하지 않았거나 설치 프로그램을 관리자로 실행하지 않은 경우.

+0

고맙습니다. 위에서 제공 한 링크를 살펴 본다면 페이지 하단에 사용자의 의견이 있습니다. 나는 똑같은 문제에 직면했다. 서비스가 시작되지 않습니다. – user1270384

+0

서비스가 시작되지 않는 것으로 간주 될 수있는 업데이트가 추가되었습니다. –