다음을 통해 공유


LogStore 클래스

정의

구조적 로그 스토리지를 나타냅니다.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
상속
LogStore
구현

예제

다음 예제에서는 LogStore를 XML 문서에 보관하는 방법을 보여 줍니다.

class LogBackup
{
    static void ArchiveToXML(LogStore logStore, string fileName)
    {
        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();

        XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.ASCII);

        writer.WriteStartElement("logArchive");
        foreach(FileRegion region in snapshot.ArchiveRegions)
        {
            writer.WriteStartElement("fileRegion");
            writer.WriteElementString("path", region.Path);
            writer.WriteElementString("length", region.FileLength.ToString());
            writer.WriteElementString("offset", region.Offset.ToString());
            using(Stream dataStream = region.GetStream())
            {
                byte[] data = new byte[dataStream.Length];
                dataStream.Read(data, 0, data.Length);
                writer.WriteElementString("data", Convert.ToBase64String(data));
            }
            writer.WriteEndElement();
        }
        writer.WriteEndElement();
        writer.Close();
        logStore.SetArchiveTail(snapshot.LastSequenceNumber);
    }
    static void RestoreFromXML(string fileName)
    {
        using(XmlTextReader reader = new XmlTextReader(fileName))
        {
            reader.ReadStartElement("logArchive");
            while(reader.IsStartElement())
            {
                string path = reader.ReadElementString("path");
                long length = Int64.Parse(reader.ReadElementString("length"));
                long offset = Int64.Parse(reader.ReadElementString("offset"));
                string dataString = reader.ReadElementString("data");
                byte[] data = Convert.FromBase64String(dataString);
                FileStream fileStream;
                using(fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fileStream.SetLength(length);
                    fileStream.Position = offset; fileStream.Write(data, 0, data.Length);
                }
            }
        reader.ReadEndElement();
        }
    }
}
Friend Class LogBackup
    Private Shared Sub ArchiveToXML(ByVal logStore As LogStore, ByVal fileName As String)
        Dim snapshot As LogArchiveSnapshot = logStore.CreateLogArchiveSnapshot()

        Dim writer As New XmlTextWriter(fileName, Encoding.ASCII)

        writer.WriteStartElement("logArchive")
        For Each region As FileRegion In snapshot.ArchiveRegions
            writer.WriteStartElement("fileRegion")
            writer.WriteElementString("path", region.Path)
            writer.WriteElementString("length", region.FileLength.ToString())
            writer.WriteElementString("offset", region.Offset.ToString())
            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)
                writer.WriteElementString("data", Convert.ToBase64String(data))
            End Using
            writer.WriteEndElement()
        Next region
        writer.WriteEndElement()
        writer.Close()
        logStore.SetArchiveTail(snapshot.LastSequenceNumber)

    End Sub
    Private Shared Sub RestoreFromXML(ByVal fileName As String)
        Using reader As New XmlTextReader(fileName)
            reader.ReadStartElement("logArchive")
            Do While reader.IsStartElement()
                Dim path = reader.ReadElementString("path")
                Dim length = Int64.Parse(reader.ReadElementString("length"))
                Dim offset = Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = Convert.FromBase64String(dataString)
                Dim fileStream As FileStream
                fileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)
                Using fileStream
                    fileStream.SetLength(length)
                    fileStream.Position = offset
                    fileStream.Write(data, 0, data.Length)
                End Using
            Loop
            reader.ReadEndElement()
        End Using
    End Sub
End Class

설명

LogRecordSequence 클래스는 CLFS(Common Log File System) 로그 위에 레코드 시퀀스 인터페이스의 구현을 제공합니다. 이 클래스는 CLFS 로그 파일을 직접 조작하고 관리하는 데 필요한 인터페이스를 제공하는 LogStore 클래스와 함께 작동합니다. 로그 저장소는 일련의 디스크 범위에서 추가 전용 스토리지를 제공합니다. LogStore 클래스는 이 스토리지를 나타내며 컨테이너 추가 및 제거, 정책 설정 및 아카이브 생성을 위한 메서드를 제공합니다. 하지만 스토리지에서 읽고 스토리지에 쓰기 위한 메서드는 제공하지 않습니다. 이러한 메서드는 LogRecordSequence 클래스에서 제공합니다.

LogStore 클래스와 LogRecordSequence 클래스의 관계는 디스크 파일과 FileStream 개체의 관계와 유사합니다. 디스크 파일은 실제 스토리지를 제공하고 길이 및 마지막 액세스 시간과 같은 특성을 갖고 있으며, FileStream 개체는 파일에서 읽고 파일에 쓰는 데 사용할 수 있는 파일에 대한 보기를 제공합니다. 이와 마찬가지로 LogStore 클래스에는 디스크 범위의 컬렉션 및 정책과 같은 특성이 있으며, LogRecordSequence 클래스는 데이터를 읽고 쓰기 위한 레코드 기반의 메커니즘을 제공합니다.

FileRecordSequence 클래스가 나타내는 파일 레코드 시퀀스와 달리, LogStore 인스턴스는 LogExtent 인스턴스가 나타내는 디스크 범위의 컬렉션에 데이터를 저장합니다. 지정된 LogStore 인스턴스의 범위는 크기가 모두 동일하며 범위가 증가하면 LogStore 인스턴스에서 공간이 추가되고 제거됩니다. 로그 범위를 추가하고 제거하려면 Add 속성에서 반환할 수 있는 Remove 개체의 LogExtentCollectionExtents 메서드를 사용합니다.

LogStore 인스턴스에는 정책이 연결되어 있을 수 있습니다. 이러한 정책은 LogPolicy 속성에서 반환할 수 있는 Policy 인스턴스로 나타냅니다. 정책에서는 로그에서 따라야 할 최대 범위 수 및 최소 크기, 특정 조건에서 LogStore를 늘리거나 줄이는 지침 등의 규칙을 규정합니다. 또한 LogStore 인스턴스를 보관할 수 있는지 여부를 지정할 수 있습니다. 정책은 로그별로 설정되고 일시적입니다. 즉, 로그에 대한 각 핸들이 닫히면 정책이 더 이상 존재하지 않습니다.

생성자

LogStore(SafeFileHandle)

지정된 핸들에 대한 LogStore 클래스의 새 인스턴스를 초기화합니다.

LogStore(String, FileMode)

지정된 경로 및 모드를 사용하여 LogStore 클래스의 새 인스턴스를 초기화합니다.

LogStore(String, FileMode, FileAccess)

지정된 경로, 모드 및 액세스 권한을 사용하여 LogStore 클래스의 새 인스턴스를 초기화합니다.

LogStore(String, FileMode, FileAccess, FileShare)

LogStore 클래스의 새 인스턴스를 초기화합니다.

LogStore(String, FileMode, FileAccess, FileShare, FileSecurity)

LogStore 클래스의 새 인스턴스를 초기화합니다.

속성

Archivable

LogStore 인스턴스를 보관할 수 있는지 여부를 나타내는 값을 가져옵니다.

BaseSequenceNumber

LogStore 인스턴스에서 유효한 레코드에 해당하는 가장 작은 시퀀스 번호를 가져옵니다.

Extents

이 로그 저장소에 대한 데이터를 포함하는 로그 범위의 컬렉션을 가져옵니다.

FreeBytes

로그 저장소에서 사용 가능한 바이트의 수를 가져옵니다.

Handle

현재 LogStore 인스턴스가 캡슐화하는 로그 파일에 대한 운영 체제 파일 핸들을 가져옵니다.

LastSequenceNumber

파생 클래스에서 재정의되는 경우 로그 저장소에 추가할 다음 레코드의 시퀀스 번호를 가져옵니다.

Length

로그 저장소의 크기(바이트)를 가져옵니다.

Policy

이 로그 저장소와 연결된 정책을 가져옵니다.

StreamCount

이 로그 저장소의 로그 스트림 수를 가져옵니다.

메서드

CreateLogArchiveSnapshot()

백업을 만들기 위해 로그 저장소 상태의 스냅샷을 만듭니다.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

백업을 만들기 위해 지정된 시퀀스 번호 간의 로그 저장소 상태에 대한 스냅샷을 만듭니다.

Delete(String)

로그 저장소를 제거합니다.

Dispose()

LogStore에서 사용하는 모든 리소스를 해제합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
SetArchiveTail(SequenceNumber)

아카이브 테일의 시퀀스 번호를 설정합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상