데이터 흐름 구성 요소에서 로그 항목 로깅 및 정의

적용 대상: Azure Data Factory SSIS Integration Runtime SQL Server

사용자 지정 데이터 흐름 구성 요소에서는 PostLogMessage 인터페이스의 IDTSComponentMetaData100 메서드를 사용하여 기존 로그 항목에 메시지를 게시할 수 있습니다. 또한 FireInformation 메서드나 IDTSComponentMetaData100 인터페이스의 유사한 메서드를 사용하여 사용자에게 정보를 제공할 수도 있습니다. 그러나 이 방법을 사용할 경우 추가 이벤트를 발생시키고 처리하는 오버헤드가 발생하며 사용자가 직접 관심 있는 메시지에 대한 자세한 정보 메시지를 조사해야 합니다. 아래에서 설명하는 대로 사용자 지정 로그 항목을 사용하면 구성 요소 사용자에게 고유한 레이블이 지정된 사용자 지정 로그 정보를 제공할 수 있습니다.

사용자 지정 로그 항목 등록 및 사용

사용자 지정 로그 항목 등록

구성 요소에서 사용할 사용자 지정 로그 항목을 등록하려면 RegisterLogEntries 기본 클래스의 PipelineComponent 메서드를 재정의합니다. 다음 예에서는 사용자 지정 로그 항목을 등록하고 이름과 설명을 지정합니다.

using Microsoft.SqlServer.Dts.Runtime;  
...  
private const string MyLogEntryName = "My Custom Component Log Entry";  
private const string MyLogEntryDescription = "Log entry from My Custom Component ";  
...  
    public override void RegisterLogEntries()  
    {  
      this.LogEntryInfos.Add(MyLogEntryName,  
        MyLogEntryDescription,  
        Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT);  
    }  
Imports Microsoft.SqlServer.Dts.Runtime  
...  
Private Const MyLogEntryName As String = "My Custom Component Log Entry"   
Private Const MyLogEntryDescription As String = "Log entry from My Custom Component "  
...  
Public  Overrides Sub RegisterLogEntries()   
  Me.LogEntryInfos.Add(MyLogEntryName, _  
    MyLogEntryDescription, _  
    Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT)   
End Sub  

DTSLogEntryFrequency 열거형은 이벤트가 기록되는 빈도에 대한 힌트를 런타임에 제공합니다.

  • DTSLEF_OCCASIONAL: 이벤트가 실행 시마다 로깅되는 것이 아니라 가끔씩만 로깅됩니다.

  • DTSLEF_CONSISTENT: 이벤트가 실행 시마다 일정 횟수만큼 로깅됩니다.

  • DTSLEF_PROPORTIONAL: 이벤트가 완료된 작업 양에 비례하여 여러 번 로깅됩니다.

위의 예에서는 구성 요소가 실행 시마다 한 번씩 로그 항목을 로깅해야 하므로 DTSLEF_CONSISTENT를 사용합니다.

사용자 지정 로그 항목을 등록하고 데이터 흐름 디자이너 화면에 사용자 지정 구성 요소의 인스턴스를 추가한 후에는 디자이너의 로깅 대화 상자에 있는 사용 가능한 로그 항목 목록에 "My Custom Component Log Entry"라는 이름의 새 로그 항목이 표시됩니다.

사용자 지정 로그 항목에 로깅

사용자 지정 로그 항목을 등록한 후에는 구성 요소에서 사용자 지정 메시지를 로깅할 수 있습니다. 다음 예에서는 PreExecute 메서드 실행 중에 구성 요소에서 사용되는 SQL 문의 텍스트를 포함하는 사용자 지정 로그 항목을 작성합니다.

public override void PreExecute()  
{  
  DateTime now = DateTime.Now;  
  byte[] additionalData = null;  
  this.ComponentMetaData.PostLogMessage(MyLogEntryName,  
    this.ComponentMetaData.Name,  
    "Command Sent was: " + myCommand.CommandText,  
    now, now, 0, ref additionalData);  
}  
Public  Overrides Sub PreExecute()   
  Dim now As DateTime = DateTime.Now   
  Dim additionalData As Byte() = Nothing   
  Me.ComponentMetaData.PostLogMessage(MyLogEntryName, _  
    Me.ComponentMetaData.Name, _  
    "Command Sent was: " + myCommand.CommandText, _  
    now, now, 0, additionalData)   
End Sub  

이제 사용자가 로깅 대화 상자에서 "내 사용자 지정 구성 요소 로그 항목"을 선택한 후 패키지를 실행하면, 로그에는 "User::My Custom Component Log Entry"이라는 레이블이 명확하게 지정된 항목이 포함됩니다. 이 새 로그 항목에는 SQL 문의 텍스트, 타임스탬프 및 개발자가 로깅한 추가 데이터가 포함됩니다.

참고 항목

Integration Services(SSIS) 로깅