Udostępnij za pośrednictwem


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 obiekt do dokumentu 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 udostępnia implementację interfejsu sekwencji rekordów na podstawie dziennika wspólnego systemu plików dziennika (CLFS). Współdziała ona z LogStore klasą, która zapewnia interfejs umożliwiający bezpośrednie manipulowanie plikiem dziennika CLFS i zarządzaniem nim. Magazyn dzienników zapewnia magazyn tylko do dołączania w ramach 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 i zapisywania 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 w pliku, który może służyć do odczytywania z niego i zapisywania w nim. 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 FileRecordSequence przez klasę LogStore wystąpienie przechowuje swoje dane w kolekcji zakresów dysków reprezentowanych przez LogExtent wystąpienia. Zakresy w danym LogStore wystąpieniu mają jednolity rozmiar, a przestrzeń jest dodawana do wystąpienia i usuwana 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 LogStore lub zmniejszania dziennika w określonych warunkach. Ponadto można określić, czy LogStore można zarchiwizować wystąpienie. Zasady są ustawiane na dziennik i są nietrwałe, co oznacza, że po zamknięciu każdego dojścia do dziennika zasady już nie istnieją.

Konstruktory

LogStore(SafeFileHandle)

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

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 LogStore to 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 dziennika, które zawierają 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 kopię zapasową migawki stanu magazynu dzienników.

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 wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
SetArchiveTail(SequenceNumber)

Ustawia numer sekwencji ogona archiwum.

ToString()

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

(Odziedziczone po Object)

Dotyczy