2011-09-23 5 views
2

C:\ProgramData에 로그 (NLog)를 기록하는 C#을 사용하여 Windows 서비스를 만들었습니다.
(위 코드를 사용하여) 내 Windows 7에서 서비스를 디버깅 할 때 로그 파일이 올바르게 작성되고 로그 레코드가 올바르게 기록됩니다. 그러나 Windows 서버 2008 (x86)에서 실행되는 서버에 서비스를 설치하면 로그 파일이 생성되지 않습니다. 또한 C:\Windows\System32\, 아무것도 체크하지 않았습니다.로그 서비스에 기록 할 Windows 서비스 권한

인증 문제로 의심되는데 내 서비스가 어떤 권리를 사용하는지 어떻게 알 수 있습니까?

PS : 관리자 권한으로 명령 줄 C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe C:\PathToMyService\MyService.exe을 사용하여 서비스를 설치했습니다.

+1

권한은 서비스를 설치하는 데 사용 된 ID가 아닌 서비스가 실행중인 모든 ID입니다. 자세한 내용은 여기를 참조하십시오 : http://stackoverflow.com/questions/858597/why-wont-my-windows-service-write-to-my-log-file –

+0

로그를 작성하는 데 C : \ windows \ system32를 사용하면 안됩니다. 파일을. 이것은 중요한 운영 체제 디렉토리입니다. 또한 C : \ ProgramData는 응용 프로그램 바이너리가 상주하므로 로그 파일로 사용해서는 안됩니다. C : \ AppData \ local \ ... 또는 Windows 2008 서버의 Windows 이벤트 로그에 응용 프로그램 서비스의 로그 파일을 작성해야합니다. 이 방법을 사용하면 권한이 문제가되지 않으며 우수 사례가됩니다. –

답변

5

services.msc을 실행하고 서비스를 찾은 다음 Properties을 선택하십시오. 서비스가 실행중인 계정을 확인하려면 Log On 탭을 확인하십시오.

귀하의 문제에 관해서는 기본적으로 대부분의 서비스는 C:\ProgramData 디렉토리에 쓸 수있는 권한이 있다고 가정하는 Local System Account에서 실행됩니다. 서비스에 nlog.config 파일이 배포되었는지 확인 했습니까?

+1

Arg, nlog.config 파일이 내 서비스와 함께 배포되지 않았다고 생각했습니다. 결정된! – Otiel

+0

@Leito - 당신의 질문은 모두 너무 친숙하게 들렸습니다 ... 나에게 좋은 몇 번 일어났습니다! – James

+0

NLog.config 파일이 서비스와 함께 배포되었는지 확인하려면 어떻게해야합니까? "항상 출력 폴더로 복사"가 충분하지 않습니까? –

1

Windows 제어판 fpr 서비스에서 서비스를 확인해야합니다. 컨텍스트 메뉴에서 서비스를 실행하는 사용자를 볼 수 있습니다. 서비스를 실행하는 사용자도 변경할 수 있습니다.

사용자는 로그 디렉토리에 글을 쓸 권한을 부여해야합니다.

관련 문제