LogStore Klasa

Definicja

Reprezentuje magazyn ze strukturą dziennika.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
Dziedziczenie
LogStore
Implementuje

Przykłady

W poniższym przykładzie pokazano, jak zarchiwizować LogStore dokument 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

Uwagi

Klasa LogRecordSequence zapewnia implementację interfejsu sekwencji rekordów na podstawie dziennika common Log File System (CLFS). Działa z LogStore klasą, która udostępnia interfejs do bezpośredniego manipulowania plikiem dziennika CLFS i zarządzaniem nim. Magazyn dzienników zapewnia magazyn tylko do dołączania w obrębie zestawu zakresów dysków. Klasa LogStore reprezentuje ten magazyn i udostępnia metody dodawania i usuwania kontenerów, ustawiania zasad i tworzenia archiwów. Nie zapewnia metod odczytywania z magazynu i zapisywania ich w magazynie; te metody są dostarczane przez klasę LogRecordSequence .

Relacja między klasą LogStore a LogRecordSequence klasą jest podobna do relacji między plikiem dysku a obiektem FileStream . Plik dysku zapewnia rzeczywisty magazyn i ma atrybuty, takie jak długość i czas ostatniego dostępu, podczas gdy FileStream obiekt udostępnia widok na pliku, który może służyć do odczytywania z niego i zapisu do niego. LogStore Podobnie klasa ma atrybuty, takie jak zasady i kolekcja zakresów dysków, a LogRecordSequence klasa zapewnia mechanizm zorientowany na rekord do odczytywania i zapisywania danych.

W przeciwieństwie do sekwencji rekordów plików reprezentowanej przez FileRecordSequence klasę wystąpienie LogStore przechowuje swoje dane w kolekcji zakresów dysków reprezentowanych przez LogExtent wystąpienia. Zakresy w danym LogStore wystąpieniu mają jednolity rozmiar, a miejsce jest dodawane do wystąpienia i usuwane z LogStore wystąpienia w przyrostach zakresu. Aby dodać i usunąć zakresy dziennika, użyj Add metod LogExtentCollection i Remove obiektu, które mogą być zwracane przez Extents właściwość .

Wystąpienie LogStore może mieć skojarzone z nim zasady. Są one reprezentowane przez LogPolicy wystąpienia, które mogą być zwracane przez Policy właściwość. Zasady określają reguły, które będą podejmowane przez dziennik, takie jak maksymalna liczba zakresów i minimalny rozmiar, oraz instrukcje dotyczące zwiększania lub zmniejszania LogStore dziennika w określonych warunkach. Ponadto można określić, czy LogStore można zarchiwizować wystąpienie. Zasady są ustawiane na dziennik i są niestabilne, co oznacza, że po zamknięciu każdego uchwytu dziennika zasady już nie istnieją.

Konstruktory

LogStore(SafeFileHandle)

Inicjuje LogStore nowe wystąpienie klasy dla określonego uchwytu.

LogStore(String, FileMode)

Inicjuje LogStore nowe wystąpienie klasy z określoną ścieżką i trybem.

LogStore(String, FileMode, FileAccess)

Inicjuje LogStore nowe wystąpienie klasy z określoną ścieżką, trybem i dostępem.

LogStore(String, FileMode, FileAccess, FileShare)

Inicjuje nowe wystąpienie klasy LogStore.

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

Inicjuje nowe wystąpienie klasy LogStore.

Właściwości

Archivable

Pobiera wartość wskazującą, czy to LogStore wystąpienie można zarchiwizować.

BaseSequenceNumber

Pobiera najniższy numer sekwencji odpowiadający prawidłowemu rekordowi w tym LogStore wystąpieniu.

Extents

Pobiera kolekcję zakresów dzienników zawierających dane dla tego magazynu dzienników.

FreeBytes

Pobiera liczbę bajtów dostępnych w magazynie dzienników.

Handle

Pobiera uchwyt pliku systemu operacyjnego dla pliku dziennika, który jest hermetyzowany przez bieżące LogStore wystąpienie.

LastSequenceNumber

Po zastąpieniu w klasie pochodnej pobiera numer sekwencji następnego rekordu, który ma zostać dołączony do magazynu dzienników.

Length

Pobiera rozmiar magazynu dzienników w bajtach.

Policy

Pobiera zasady skojarzone z tym magazynem dzienników.

StreamCount

Pobiera liczbę strumieni dzienników w tym magazynie dzienników.

Metody

CreateLogArchiveSnapshot()

Tworzy migawkę stanu magazynu dzienników na potrzeby tworzenia kopii zapasowej.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Tworzy migawkę stanu magazynu dzienników między określonymi numerami sekwencji na potrzeby tworzenia kopii zapasowej.

Delete(String)

Usuwa magazyn dzienników.

Dispose()

Zwalnia wszelkie zasoby używane przez element LogStore.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
SetArchiveTail(SequenceNumber)

Ustawia numer sekwencji archiwum ogona.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy