Share via


방법: 서비스에 대한 정보 로깅

참고 항목

이 문서는 .NET의 호스트된 서비스에는 적용되지 않습니다. Microsoft.Extensions.Hosting.BackgroundService 및 Worker Service 템플릿을 사용하는 Windows 서비스의 최신 콘텐츠는 다음을 참조하세요.

기본적으로 모든 Windows 서비스 프로젝트는 애플리케이션 이벤트 로그와 상호 작용하고 이 로그에 정보 및 예외를 작성할 수 있습니다. AutoLog 속성을 사용하여 애플리케이션에서 이 기능을 표시할지 여부를 나타냅니다. 기본적으로, 로깅은 Windows 서비스 프로젝트 템플릿으로 만드는 모든 서비스에 대해 사용 설정됩니다. EventLog 클래스의 정적 형식을 사용하면 EventLog 구성 요소의 인스턴스를 만들거나 소스를 수동으로 등록하지 않고도 로그에 서비스 정보를 작성할 수 있습니다.

서비스가 설치되어 있는 컴퓨터에 로깅이 사용 설정되어 있으면, 서비스 설치 관리자가 애플리케이션 로그를 사용하여 각 서비스를 유효한 이벤트 소스로 프로젝트에 자동으로 등록합니다. 서비스가 시작, 중지, 일시 중지, 다시 시작, 설치 또는 제거될 때마다 서비스가 정보를 기록합니다. 발생되는 오류도 기록합니다. 기본 동작을 사용하는 경우에는 로그에 항목을 쓰기 위해 코드를 작성할 필요가 없습니다. 서비스가 자동으로 처리합니다.

애플리케이션 로그가 아닌 이벤트 로그에 작성하려면 AutoLog 속성을 false로 설정하고, 서비스 코드 내에 사용자 지정 이벤트 로그를 만들고, 해당 로그에 대한 유효한 항목 소스로 서비스를 등록해야 합니다. 그런 다음 원하는 작업이 발생할 때마다 항목을 로그에 기록할 코드를 작성해야 합니다.

참고 항목

사용자 지정 이벤트 로그를 사용하고 서비스 애플리케이션이 이 로그에 기록되도록 구성하는 경우, 코드에서 서비스의 ServiceName 속성을 설정하기 전에 이벤트 로그에 액세스를 시도하지 않아야 합니다. 서비스가 유효한 이벤트 소스로 등록되려면 이벤트 로그에 이 속성 값이 필요합니다.

서비스에 대해 기본 이벤트 로깅을 활성화하려면

  • 구성 요소의 AutoLog 속성을 true로 설정합니다.

    참고 항목

    기본적으로 이 속성은 true로 설정됩니다. 조건을 평가한 다음 조건의 결과를 기반으로 AutoLog 속성을 설정하는 것과 같이 복잡한 프로세스를 구축하는 경우가 아니라면 이 속성을 명시적으로 설정할 필요가 없습니다.

서비스에 대해 이벤트 로깅을 비활성화하려면

  • 구성 요소의 AutoLog 속성을 false로 설정합니다.

    AutoLog = false;
    
    Me.AutoLog = False
    

사용자 지정 로그에 로깅을 설정하려면

  1. AutoLog 속성을 false로 설정합니다.

    참고 항목

    사용자 지정 로그를 사용하려면 AutoLog 를 false로 설정해야 합니다.

  2. Windows 서비스 애플리케이션에서 EventLog 구성 요소의 인스턴스를 설정합니다.

  3. CreateEventSource 메서드를 호출하고 만들려는 로그 파일의 이름과 소스 문자열을 지정하여 사용자 지정 로그를 만듭니다.

  4. Source 구성 요소 인스턴스의 EventLog 속성을 3단계에서 만든 소스 문자열로 설정합니다.

  5. WriteEntry 구성 요소 인스턴스의 EventLog 메서드에 액세스하여 항목을 작성합니다.

    다음 코드에서는 사용자 지정 로그에 로깅을 설정하는 방법을 보여줍니다.

    참고 항목

    이 코드 예제에서 EventLog 구성 요소의 인스턴스 이름은 eventLog1 (Visual Basic의 경우EventLog1 )입니다. 2단계에서 다른 이름의 인스턴스를 만든 경우에는 그에 따라 코드를 변경합니다.

    public UserService2()
    {
        _eventLog1 = new EventLog();
        // Turn off autologging
    
        AutoLog = false;
        // create an event source, specifying the name of a log that
        // does not currently exist to create a new, custom log
        if (!EventLog.SourceExists("MySource"))
        {
            EventLog.CreateEventSource(
                "MySource", "MyLog");
        }
        // configure the event log instance to use this source name
        _eventLog1.Source = "MySource";
        _eventLog1.Log = "MyLog";
    }
    
    Public Sub New()
        ' Turn off autologging
        Me.AutoLog = False
        ' Create a new event source and specify a log name that
        ' does not exist to create a custom log
        If Not System.Diagnostics.EventLog.SourceExists("MySource") Then
            System.Diagnostics.EventLog.CreateEventSource("MySource",
                "MyLog")
        End If
        ' Configure the event log instance to use this source name
        EventLog1.Source = "MySource"
    End Sub
    
    protected override void OnStart(string[] args)
    {
        // write an entry to the log
        _eventLog1.WriteEntry("In OnStart.");
    }
    
    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Write an entry to the log you've created.
        EventLog1.WriteEntry("In Onstart.")
    End Sub
    

참고 항목