다음을 통해 공유


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 공간을 지우는 방법으로 수행할 수 있습니다. 예제 섹션의 코드 샘플은 두 번째 방법을 보여 줍니다.

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

적용 대상