C#으로 Windows Service 만들기 (5)

개요



마지막 기사 C#으로 Windows Service 만들기 (4) 계속.
이벤트 로그를 구현합니다.

환경



Windows 10
Visual Studio 2017 커뮤니티

절차



이벤트 로그는 Windows에서 관리되는 로그입니다.
출력한 로그 정보는 이벤트 뷰어에서 볼 수 있습니다.


ServiceBase 클래스의 파생 클래스(기본이면 Service1.cs라는 파일. 내 프로젝트에서는 ServiceTest.cs)를 디자이너에서 엽니다.
⇒ 솔루션 탐색기에서 해당 파일을 더블 클릭합니다.

그런 다음 도구 상자에서 구성 요소에있는 "EventLog"를 선택하고,
디자이너로 드래그 앤 드롭합니다.


그런 다음 삭제한 EventLog 구성 요소를 클릭하여 속성 탭을 엽니다.
이름을 적절하게 변경합니다.
여기에서는 ServiceEventLog로 하고 있습니다.


지금까지 (구성 요소 추가)는 EventLog 클래스의 인스턴스 (ServiceEventLog)를 생성합니다.
⇒ServiceTest.Designer.cs에 정의되어 있네요.

그런 다음 ServiceTest.cs 코드를 표시하고 생성자에 처리를 추가합니다.

ServiceTest.cs
    ServiceTest()
    {
        InitializeComponent();

        // ---------- 以下が追加した処理 ----------
        ServiceEventLog = new System.Diagnostics.EventLog();
        if (!System.Diagnostics.EventLog.SourceExists("ServiceTest"))
        {
            System.Diagnostics.EventLog.CreateEventSource(
                "ServiceTest", "Application");
        }
        ServiceEventLog.Source = "ServiceTest";
        ServiceEventLog.Log = "Application";
        // ----------------------------------------
    }


이제 이벤트 로그를 출력할 준비가 되었습니다.
시도에 마지막으로 Override하여 생성한 OnPause나 OnContinue의 이벤트 핸들러내에 로그 출력 처리를 추가해 보겠습니다.
로그 출력은 WriteEntry 함수를 사용합니다.

ServiceTest.cs
    protected override void OnContinue()
    {
        ServiceEventLog.WriteEntry("OnContinue Called.");
        base.OnContinue();
    }

    protected override void OnPause()
    {
        ServiceEventLog.WriteEntry("OnPause Called.");
        base.OnPause();
    }

이벤트 뷰어를 시작하고 로그를 확인해 봅니다.




추가한 이벤트 로그가 제대로 저장됩니다.

다음에는 주기 실행 처리의 구현에 대해 씁니다.

좋은 웹페이지 즐겨찾기