LogRecordSequence.TailPinned 이벤트

정의

시퀀스의 꼬리를 이동해야 한다는 신호를 표시합니다.

public:
 virtual event EventHandler<System::IO::Log::TailPinnedEventArgs ^> ^ TailPinned;
public event EventHandler<System.IO.Log.TailPinnedEventArgs> TailPinned;
member this.TailPinned : EventHandler<System.IO.Log.TailPinnedEventArgs> 
Public Custom Event TailPinned As EventHandler(Of TailPinnedEventArgs) 

이벤트 유형

구현

예제

이 예제에서는 이벤트를 사용하는 TailPinned 방법을 보여줍니다.

recordSequence.RetryAppend = true;
recordSequence.TailPinned += new EventHandler<TailPinnedEventArgs>(HandleTailPinned);

void HandleTailPinned(object sender, TailPinnedEventArgs tailPinnedEventArgs)
{
   // tailPinnedEventArgs.TargetSequenceNumber is the target
   // sequence number to free up space to.
   // However, this sequence number is not necessarily valid.  We have
   // to use this sequence number as a starting point for finding a
   // valid point within the log to advance toward. You need to
   // identify a record with a sequence number equal to, or greater
   // than TargetSequenceNumber; let's call this
   // realTargetSequenceNumber. Once found, move the base

   recordSequence.AdvanceBaseSequenceNumber(realTargetSequenceNumber);

}

설명

레코드 시퀀스의 공간이 부족하면 이 이벤트를 실행할 수 있습니다. 이 이벤트가 발생하면 시퀀스의 꼬리(즉, 기본 시퀀스 번호)가 앞으로 이동하여 공간을 확보합니다.

레코드 시퀀스가 어떤 이유로든 공간을 확보해야 한다고 결정할 때 언제든지 이벤트가 발생할 수 있습니다. 예를 들어 CLFS 정책 엔진은 동일한 로그 파일을 공유하는 두 로그 클라이언트의 꼬리가 너무 멀리 떨어져 있다고 판단할 때 이벤트를 실행하도록 결정할 수 있습니다. 공간 확보는 다시 시작 영역을 작성하거나 로그를 잘라내고 메서드를 사용하여 AdvanceBaseSequenceNumber 공간을 지우는 방식으로 수행할 수 있습니다. 예제 섹션의 코드 샘플은 두 번째 방법을 보여 줍니다.

이벤트 외부에서 WriteRestartArea 메서드를 TailPinned 호출하여 공간을 확보할 수도 있습니다. 다시 시작 영역은 다른 로그 처리 시스템의 검사점과 비슷합니다. 이 메서드를 호출하면 애플리케이션이 다시 시작 영역 이전의 모든 이전 레코드를 완전히 완료된 것으로 간주하고 이후 레코드 추가에 사용할 수 있음을 나타냅니다. 다른 레코드와 마찬가지로 이 메서드에서 작성한 레코드를 사용하려면 로그의 실제 여유 공간이 필요합니다.

적용 대상