데이터 흐름 구성 요소에서 로그 항목 로깅 및 정의Logging and Defining Log Entries in a Data Flow Component

사용자 지정 데이터 흐름 구성 요소에서는 PostLogMessage 인터페이스의 IDTSComponentMetaData100 메서드를 사용하여 기존 로그 항목에 메시지를 게시할 수 있습니다.Custom data flow components can post messages to an existing log entry by using the PostLogMessage method of the IDTSComponentMetaData100 interface. 또한 FireInformation 메서드나 IDTSComponentMetaData100 인터페이스의 유사한 메서드를 사용하여 사용자에게 정보를 제공할 수도 있습니다.They can also present information to the user by using the FireInformation method or similar methods of the IDTSComponentMetaData100 interface. 그러나 이 방법을 사용할 경우 추가 이벤트를 발생시키고 처리하는 오버헤드가 발생하며 사용자가 직접 관심 있는 메시지에 대한 자세한 정보 메시지를 조사해야 합니다.However, this approach incurs the overhead of raising and handling additional events, and forces the user to sift through verbose informational messages for the messages that may be of interest to them. 아래에서 설명하는 대로 사용자 지정 로그 항목을 사용하면 구성 요소 사용자에게 고유한 레이블이 지정된 사용자 지정 로그 정보를 제공할 수 있습니다.You can use a custom log entry as described below to provide distinctly labeled custom log information to users of your component.

사용자 지정 로그 항목 등록 및 사용Registering and Using a Custom Log Entry

사용자 지정 로그 항목 등록Registering a Custom Log Entry

구성 요소에서 사용할 사용자 지정 로그 항목을 등록하려면 RegisterLogEntries 기본 클래스의 PipelineComponent 메서드를 재정의합니다.To register a custom log entry for use by your component, override the RegisterLogEntries method of the PipelineComponent base class. 다음 예에서는 사용자 지정 로그 항목을 등록하고 이름과 설명을 지정합니다.The following example registers a custom log entry and provides a name and description.

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 열거형은 이벤트가 기록되는 빈도에 대한 힌트를 런타임에 제공합니다.The DTSLogEntryFrequency enumeration provides a hint to the runtime about how frequently the event will be logged:

  • DTSLEF_OCCASIONAL: 이벤트가 실행 시마다 로깅되는 것이 아니라 가끔씩만 로깅됩니다.DTSLEF_OCCASIONAL: Event is logged only sometimes, not during every execution.

  • DTSLEF_CONSISTENT: 이벤트가 실행 시마다 일정 횟수만큼 로깅됩니다.DTSLEF_CONSISTENT: Event is logged a constant number of times during every execution.

  • DTSLEF_PROPORTIONAL: 이벤트가 완료된 작업 양에 비례하여 여러 번 로깅됩니다.DTSLEF_PROPORTIONAL: Event is logged a number of times proportional to the amount of work completed.

    위의 예에서는 구성 요소가 실행 시마다 한 번씩 로그 항목을 로깅해야 하므로 DTSLEF_CONSISTENT를 사용합니다.The example above uses DTSLEF_CONSISTENT because the component expects to log an entry once per execution.

    사용자 지정 로그 항목을 등록 하 고 데이터 흐름 디자이너 화면에 사용자 지정 구성 요소 인스턴스를 추가 후의 로깅 대화 상자는 디자이너에서 사용 가능한 로그 항목 목록에 "My Custom Component Log Entry" 라는 이름의 새 로그 항목을 표시 합니다.After registering the custom log entry and adding an instance of your custom component to the data flow designer surface, the Logging dialog box in the designer displays a new log entry with the name "My Custom Component Log Entry" in the list of available log entries.

사용자 지정 로그 항목에 로깅Logging to a Custom Log Entry

사용자 지정 로그 항목을 등록한 후에는 구성 요소에서 사용자 지정 메시지를 로깅할 수 있습니다.After registering the custom log entry, the component can now log custom messages. 다음 예에서는 PreExecute 메서드 실행 중에 구성 요소에서 사용되는 SQL 문의 텍스트를 포함하는 사용자 지정 로그 항목을 작성합니다.The example below writes a custom log entry during the PreExecute method that contains the text of a SQL statement used by the component.

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  

이제 사용자에서 실행 될 때 패키지는 "My Custom Component Log Entry"를 선택한 후는 로깅 대화 상자에서 로그에는 명확 하 게 "User::My Custom Component Log Entry."로 표시 된 항목이 포함 됩니다Now when the user executes the package, after selecting the "My Custom Component Log Entry" in the Logging dialog box, the log will contain an entry clearly labeled as "User::My Custom Component Log Entry." 이 새 로그 항목에는 SQL 문, 타임스탬프 및 개발자가 로깅한 추가 데이터의 텍스트가 포함됩니다.This new log entry contains the text of the SQL statement, the timestamp, and any additional data logged by the developer.

관련 항목:See Also

Integration Services ( Ssis) 로깅Integration Services (SSIS) Logging