2011-02-16 5 views
3

Ent Lib 5를 사용하여 이벤트 로그에 로깅합니다. Windows 7 시스템에서 응용 프로그램을 실행할 때 모든 것이 작동합니다. 그러나 WindowsServer 2008에 배포하면 로깅이 중지됩니다. 이벤트 로그에 아무 것도 쓰지 않습니다. 두 시스템 모두 Ent Lib 5가 설치됩니다.엔터 프라이즈 라이브러리 로깅되지 않음

그래서 어떻게 생각하십니까? 무엇이 문제 일 수 있습니까?

답변

7

Windows 이벤트 로그에 로깅 할 때 일반적인 상황입니다. 이는 이벤트 소스가 Windows Server 2008에 등록되어 있지 않기 때문일 수 있습니다. 개발자 컴퓨터에서 실행하면 (대부분의 개발자와 마찬가지로) 관리자 권한이 있고 .NET Framework가 처음으로 이벤트 소스를 자동으로 만듭니다 당신은 그들을 사용합니다. 관리 권한이없는 응용 프로그램은 이벤트 원본을 만들 수 없으므로 로깅이 실패합니다. 로깅 블록의 철학이 산만하지는 않지만 아무 것도 기록되지 않으므로 앱이 계속 실행됩니다.

응용 프로그램을 배포 할 때 설치 프로그램 클래스를 포함시켜 이벤트 소스를 만들어야합니다. 개발을위한 빠른 해결책은 Windows PowerShell을 사용하는 것입니다. 상승 된 PowerShell 프로세스를 실행하고 다음 명령을 사용하십시오.

[System.Diagnostics.EventLog]::CreateEventSource(sourceName, logName) 

주어진 로그에 대한 이벤트 원본을 만들려면이 명령을 사용하십시오.

또는 EntLib 어셈블리를 통해 InstallUtil을 실행하십시오. EntLib와 함께 제공되는 InstallServices.bat가 있습니다.

자세히보기 Codeplex discussion.

+1

나는 이것을하기 위해 powershell 스크립트를 만들었습니다. - 권한 상승으로 실행 중인지 확인 - 사용자에게 경고하지 않는 경우 경고합니다. - 이벤트 로그가 있는지 확인합니다. - 이벤트 로그를 만들지 않으려면 만듭니다. - 사용자에게 다음과 같이 메시지를 표시합니다. 결과에 https://gist.github.com/3668859 : RegisterEventLog.ps1 – Dan

0

regedit를 사용하여 수동으로 이벤트 소스를 추가 할 수도 있습니다.

이 부분은 MSDN article입니다.

관련 문제