LogRecordSequence.Append 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
로그 레코드를 IRecordSequence에 씁니다.
오버로드
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
시퀀스에서 이전에 예약된 공간을 사용하여 로그 레코드를 IRecordSequence에 추가합니다. 이 메서드는 상속될 수 없습니다. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
시퀀스에서 이전에 예약된 공간을 사용하여 로그 레코드를 IRecordSequence에 추가합니다. 이 메서드는 상속될 수 없습니다. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
로그 레코드를 LogRecordSequence에 씁니다. 이 메서드는 상속될 수 없습니다. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
로그 레코드를 IRecordSequence에 추가합니다. 이 메서드는 상속될 수 없습니다. |
예제
이 예제에서는 멤버를 사용하는 방법을 보여줍니다.Append
// Append records. Appending three records.
public void AppendRecords()
{
Console.WriteLine("Appending Log Records...");
SequenceNumber previous = SequenceNumber.Invalid;
previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
previous = sequence.Append(CreateData("Using LogRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
Console.WriteLine("Done...");
}
' Append records. Appending three records.
Public Sub AppendRecords()
Console.WriteLine("Appending Log Records...")
Dim previous As SequenceNumber = SequenceNumber.Invalid
previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
previous = sequence.Append(CreateData("Using LogRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
Console.WriteLine("Done...")
End Sub
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)
시퀀스에서 이전에 예약된 공간을 사용하여 로그 레코드를 IRecordSequence에 추가합니다. 이 메서드는 상속될 수 없습니다.
public:
virtual System::IO::Log::SequenceNumber Append(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservations);
public System.IO.Log.SequenceNumber Append (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservations);
abstract member Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
override this.Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
Public Function Append (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservations As ReservationCollection) As SequenceNumber
매개 변수
- data
- ArraySegment<Byte>
연결하여 레코드로 추가할 바이트 배열 세그먼트의 목록입니다.
- nextUndoRecord
- SequenceNumber
사용자가 지정한 순서에서 다음 레코드의 시퀀스 번호입니다.
- previousRecord
- SequenceNumber
이전 순서에서 다음 레코드의 시퀀스 번호입니다.
- recordAppendOptions
- RecordAppendOptions
데이터를 쓰는 방법을 지정하는 RecordAppendOptions의 유효한 값입니다.
- reservations
- ReservationCollection
이 레코드에 사용해야 하는 예약이 포함된 ReservationCollection입니다.
반환
추가된 로그 레코드의 시퀀스 번호입니다.
구현
예외
userRecord
또는 previousRecord
가 이 시퀀스에 부적합한 경우
또는
data
가 최대 레코드 크기보다 커서 추가할 수 없는 경우
또는
이 레코드 시퀀스를 통해 reservations
를 만들 수 없는 경우
하나 이상의 인수가 null
인 경우
userRecord
또는 previousRecord
가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우
읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.
시퀀스가 삭제된 후 메서드가 호출된 경우
메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우
레코드 시퀀스가 꽉 찼습니다.
지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우
data
에서 reservations
에 맞는 크기의 예약을 찾을 수 없는 경우
설명
매개 변수에 data
포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.
추가된 레코드는 매개 변수로 지정된 예약을 사용하여 이전에 예약된 reservations
공간을 사용합니다. 추가가 성공하면 데이터를 저장할 수 있는 가장 작은 예약 영역을 사용하고 해당 예약 영역은 컬렉션에서 제거됩니다.
일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions
지정하거나 메서드를 호출합니다 Flush .
적용 대상
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)
시퀀스에서 이전에 예약된 공간을 사용하여 로그 레코드를 IRecordSequence에 추가합니다. 이 메서드는 상속될 수 없습니다.
public:
virtual System::IO::Log::SequenceNumber Append(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservations);
public System.IO.Log.SequenceNumber Append (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservations);
abstract member Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
override this.Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
Public Function Append (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservations As ReservationCollection) As SequenceNumber
매개 변수
- data
- IList<ArraySegment<Byte>>
연결하여 레코드로 추가할 바이트 배열 세그먼트의 목록입니다.
- userRecord
- SequenceNumber
사용자가 지정한 순서에서 다음 레코드의 시퀀스 번호입니다.
- previousRecord
- SequenceNumber
이전 순서에서 다음 레코드의 시퀀스 번호입니다.
- recordAppendOptions
- RecordAppendOptions
데이터를 쓰는 방법을 지정하는 RecordAppendOptions의 유효한 값입니다.
- reservations
- ReservationCollection
이 레코드에 사용해야 하는 예약이 포함된 ReservationCollection입니다.
반환
추가된 로그 레코드의 시퀀스 번호입니다.
구현
예외
userRecord
또는 previousRecord
가 이 시퀀스에 부적합한 경우
또는
data
가 최대 레코드 크기보다 커서 추가할 수 없는 경우
또는
이 레코드 시퀀스를 통해 reservations
를 만들 수 없는 경우
하나 이상의 인수가 null
인 경우
userRecord
또는 previousRecord
가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우
읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.
시퀀스가 삭제된 후 메서드가 호출된 경우
메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우
레코드 시퀀스가 꽉 찼습니다.
지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우
data
에서 reservations
에 맞는 크기의 예약을 찾을 수 없는 경우
설명
매개 변수에 data
포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.
추가된 레코드는 매개 변수로 지정된 예약을 사용하여 이전에 예약된 reservations
공간을 사용합니다. 추가가 성공하면 데이터를 저장할 수 있는 가장 작은 예약 영역을 사용하고 해당 예약 영역은 컬렉션에서 제거됩니다.
일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions
지정하거나 메서드를 호출합니다 Flush .
적용 대상
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)
로그 레코드를 LogRecordSequence에 씁니다. 이 메서드는 상속될 수 없습니다.
public:
virtual System::IO::Log::SequenceNumber Append(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions);
public System.IO.Log.SequenceNumber Append (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions);
abstract member Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
override this.Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
Public Function Append (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions) As SequenceNumber
매개 변수
- data
- ArraySegment<Byte>
연결하여 레코드로 추가할 바이트 배열 세그먼트의 목록입니다.
- nextUndoRecord
- SequenceNumber
사용자가 지정한 순서에서 다음 레코드의 시퀀스 번호입니다.
- previousRecord
- SequenceNumber
이전 순서에서 다음 레코드의 시퀀스 번호입니다.
- recordAppendOptions
- RecordAppendOptions
데이터를 쓰는 방법을 지정하는 RecordAppendOptions의 유효한 값입니다.
반환
추가된 로그 레코드의 시퀀스 번호입니다.
구현
예외
userRecord
또는 previousRecord
가 이 시퀀스에 부적합한 경우
또는
data
가 최대 레코드 크기보다 커서 추가할 수 없는 경우
또는
이 레코드 시퀀스를 통해 reservations
를 만들 수 없는 경우
하나 이상의 인수가 null
인 경우
userRecord
또는 previousRecord
가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우
읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.
시퀀스가 삭제된 후 메서드가 호출된 경우
메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우
레코드 시퀀스가 꽉 찼습니다.
지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우
예제
다음 예제에서는 이 메서드를 사용하여 로그 레코드를 시퀀스에 추가하는 방법을 보여 줍니다.
// Start Appending in two streams with interleaving appends.
SequenceNumber previous1 = SequenceNumber.Invalid;
SequenceNumber previous2 = SequenceNumber.Invalid;
Console.WriteLine("Appending interleaving records in stream1 and stream2...");
Console.WriteLine();
// Append two records in stream1.
previous1 = sequence1.Append(
CreateData("MyLogStream1: Hello World!"),
SequenceNumber.Invalid,
SequenceNumber.Invalid,
RecordAppendOptions.ForceFlush);
previous1 = sequence1.Append(
CreateData("MyLogStream1: This is my first Logging App"),
previous1,
previous1,
RecordAppendOptions.ForceFlush);
// Append two records in stream2.
previous2 = sequence2.Append(
CreateData("MyLogStream2: Hello World!"),
SequenceNumber.Invalid,
SequenceNumber.Invalid,
RecordAppendOptions.ForceFlush);
previous2 = sequence2.Append(
CreateData("MyLogStream2: This is my first Logging App"),
previous2,
previous2,
RecordAppendOptions.ForceFlush);
// Append the third record in stream1.
previous1 = sequence1.Append(CreateData(
"MyLogStream1: Using LogRecordSequence..."),
previous1,
previous1,
RecordAppendOptions.ForceFlush);
// Append the third record in stream2.
previous2 = sequence2.Append(
CreateData("MyLogStream2: Using LogRecordSequence..."),
previous2,
previous2,
RecordAppendOptions.ForceFlush);
' Start Appending in two streams with interleaving appends.
Dim previous1 As SequenceNumber = SequenceNumber.Invalid
Dim previous2 As SequenceNumber = SequenceNumber.Invalid
Console.WriteLine("Appending interleaving records in stream1 and stream2...")
Console.WriteLine()
' Append two records in stream1.
previous1 = sequence1.Append(CreateData("MyLogStream1: Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
previous1 = sequence1.Append(CreateData("MyLogStream1: This is my first Logging App"), previous1, previous1, RecordAppendOptions.ForceFlush)
' Append two records in stream2.
previous2 = sequence2.Append(CreateData("MyLogStream2: Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
previous2 = sequence2.Append(CreateData("MyLogStream2: This is my first Logging App"), previous2, previous2, RecordAppendOptions.ForceFlush)
' Append the third record in stream1.
previous1 = sequence1.Append(CreateData("MyLogStream1: Using LogRecordSequence..."), previous1, previous1, RecordAppendOptions.ForceFlush)
' Append the third record in stream2.
previous2 = sequence2.Append(CreateData("MyLogStream2: Using LogRecordSequence..."), previous2, previous2, RecordAppendOptions.ForceFlush)
설명
매개 변수에 data
포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.
일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions
지정하거나 메서드를 호출합니다 Flush .
적용 대상
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)
로그 레코드를 IRecordSequence에 추가합니다. 이 메서드는 상속될 수 없습니다.
public:
virtual System::IO::Log::SequenceNumber Append(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions);
public System.IO.Log.SequenceNumber Append (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions);
abstract member Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
override this.Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
Public Function Append (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions) As SequenceNumber
매개 변수
- data
- IList<ArraySegment<Byte>>
연결하여 레코드로 추가할 바이트 배열 세그먼트의 목록입니다.
- userRecord
- SequenceNumber
사용자가 지정한 순서에서 다음 레코드의 시퀀스 번호입니다.
- previousRecord
- SequenceNumber
이전 순서에서 다음 레코드의 시퀀스 번호입니다.
- recordAppendOptions
- RecordAppendOptions
데이터를 쓰는 방법을 지정하는 RecordAppendOptions의 유효한 값입니다.
반환
추가된 로그 레코드의 시퀀스 번호입니다.
구현
예외
userRecord
또는 previousRecord
가 이 시퀀스에 부적합한 경우
또는
data
가 최대 레코드 크기보다 커서 추가할 수 없는 경우
또는
이 레코드 시퀀스를 통해 reservations
를 만들 수 없는 경우
하나 이상의 인수가 null
인 경우
userRecord
또는 previousRecord
가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우
읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.
시퀀스가 삭제된 후 메서드가 호출된 경우
메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우
레코드 시퀀스가 꽉 찼습니다.
지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우
설명
매개 변수에 data
포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.
일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions
지정하거나 메서드를 호출합니다 Flush .
적용 대상
.NET