데이터 흐름 구성 요소에서 로그 항목 로깅 및 정의
적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime
사용자 지정 데이터 흐름 구성 요소는 인터페이스의 메서드를 사용하여 기존 로그 항목에 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를 사용합니다.
사용자 지정 로그 항목을 등록하고 사용자 지정 구성 요소의 인스턴스를 데이터 흐름 디자이너 화면에 추가한 후 디자이너의 로깅 대화 상자에 사용 가능한 로그 항목 목록에 "내 사용자 지정 구성 요소 로그 항목"이라는 이름의 새 로그 항목이 표시됩니다.
사용자 지정 로그 항목에 로깅
사용자 지정 로그 항목을 등록한 후에는 구성 요소에서 사용자 지정 메시지를 로깅할 수 있습니다. 아래 예제에서는 구성 요소에서 사용하는 SQL 문의 텍스트를 포함하는 메서드 중에 PreExecute 사용자 지정 로그 항목을 작성합니다.
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 문의 텍스트, 타임스탬프 및 개발자가 로깅한 추가 데이터가 포함됩니다.