Sdílet prostřednictvím


LogStore Třída

Definice

Představuje úložiště strukturované protokoly.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
Dědičnost
LogStore
Implementuje

Příklady

Následující příklad ukazuje, jak archivovat LogStore 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

Poznámky

Třída LogRecordSequence poskytuje implementaci rozhraní pořadí záznamů nad protokolem CLFS (Common Log File System). Funguje s LogStore třídou , která poskytuje rozhraní pro přímou manipulaci se souborem protokolu CLFS a jeho správu. Úložiště protokolů poskytuje úložiště jen pro připojení napříč sadou diskových rozsahů. Třída LogStore představuje toto úložiště a poskytuje metody pro přidávání a odebírání kontejnerů, nastavení zásad a vytváření archivů. Neposkytuje metody pro čtení z úložiště a zápis do úložiště; tyto metody jsou poskytovány LogRecordSequence třídou .

Relace mezi LogStore třídou a LogRecordSequence třídou je podobná relaci mezi diskovým souborem a objektem FileStream . Soubor disku poskytuje skutečné úložiště a má atributy, jako je délka a čas posledního FileStream přístupu, zatímco objekt poskytuje zobrazení souboru, které lze použít ke čtení a zápisu do něj. Podobně třída má atributy, LogStore jako je zásada a kolekce rozsahů disku, a LogRecordSequence třída poskytuje mechanismus orientovaný na záznamy pro čtení a zápis dat.

Na rozdíl od sekvence záznamu FileRecordSequence souboru reprezentované třídou LogStore ukládá instance svá data v kolekci diskových rozsahů reprezentovaných instancemi LogExtent . Všechny rozsahy v dané LogStore instanci mají stejnou velikost a mezery se přidávají k instanci a odebírají z instancí LogStore v přírůstcích rozsahu. Pokud chcete přidat a odebrat rozsahy protokolu, použijte Add metody a Remove objektu LogExtentCollection , které může vrátit Extents vlastnost .

Instance LogStore může mít přidružené zásady. Ty jsou reprezentovány instancemi LogPolicy , které mohou být vráceny Policy vlastností . Zásady určují pravidla, která se protokol pokusí dodržovat, například maximální počet rozsahů a minimální velikost a pokyny pro zvětšení nebo zmenšení rozsahu LogStore za určitých podmínek. Kromě toho můžete určit, zda LogStore lze instanci archivovat. Zásady se nastavují pro protokol a jsou nestálé, což znamená, že po zavření každého popisovače protokolu už zásady neexistují.

Konstruktory

LogStore(SafeFileHandle)

Inicializuje novou instanci LogStore třídy pro zadaný popisovač.

LogStore(String, FileMode)

Inicializuje novou instanci LogStore třídy se zadanou cestou a režimem.

LogStore(String, FileMode, FileAccess)

Inicializuje novou instanci LogStore třídy se zadanou cestou, režimem a přístupem.

LogStore(String, FileMode, FileAccess, FileShare)

Inicializuje novou instanci LogStore třídy .

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

Inicializuje novou instanci LogStore třídy .

Vlastnosti

Archivable

Získá hodnotu označující, zda lze tuto LogStore instanci archivovat.

BaseSequenceNumber

Získá nejnižší pořadové číslo, které odpovídá platnému záznamu v této LogStore instanci.

Extents

Získá kolekci rozsahů protokolu, které obsahují data pro toto úložiště protokolů.

FreeBytes

Získá počet bajtů dostupných v úložišti protokolů.

Handle

Získá popisovač souboru operačního systému pro soubor protokolu, který aktuální LogStore instance zapouzdřuje.

LastSequenceNumber

Při přepsání v odvozené třídě získá pořadové číslo dalšího záznamu, který se připojí k úložišti protokolů.

Length

Získá velikost úložiště protokolů v bajtech.

Policy

Získá zásadu přidruženou k tomuto úložišti protokolů.

StreamCount

Získá počet datových proudů protokolu v tomto úložišti protokolů.

Metody

CreateLogArchiveSnapshot()

Pořídí snímek stavu úložiště protokolů pro vytvoření zálohy.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Pořídí snímek stavu úložiště protokolů mezi zadanými pořadovými čísly pro vytvoření zálohy.

Delete(String)

Odebere úložiště protokolů.

Dispose()

Uvolní všechny prostředky používané nástrojem LogStore.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
SetArchiveTail(SequenceNumber)

Nastaví pořadové číslo archivního konce.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro