LogStore Klass

Definition

Representerar en loggstrukturerad lagring.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
Arv
LogStore
Implementeringar

Exempel

I följande exempel visas hur du arkiverar ett LogStore till ett XML-dokument.

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

Kommentarer

Klassen LogRecordSequence tillhandahåller en implementering av postsekvensgränssnittet ovanpå en CLFS-logg (Common Log File System). Den fungerar med LogStore klassen, som tillhandahåller ett gränssnitt för direktmanipulering och hantering av en CLFS-loggfil. Ett loggarkiv tillhandahåller lagring med endast tillägg i en uppsättning diskutrymmen. Klassen LogStore representerar den här lagringen och innehåller metoder för att lägga till och ta bort containrar, ange princip och skapa arkiv. Den tillhandahåller inte metoder för att läsa från och skriva till lagringen. dessa metoder tillhandahålls av LogRecordSequence klassen.

Relationen mellan LogStore klassen och LogRecordSequence klassen liknar relationen mellan en diskfil och ett FileStream objekt. Diskfilen tillhandahåller det faktiska lagringsutrymmet och har attribut som längd och senaste åtkomsttid, medan FileStream objektet ger en vy över filen som kan användas för att läsa från den och skriva till den. LogStore På samma sätt har klassen attribut som en princip och en samling diskutrymmenLogRecordSequence, och klassen tillhandahåller en postorienterad mekanism för att läsa och skriva data.

Till skillnad från filpostsekvensen FileRecordSequence som representeras av klassen lagrar en LogStore instans sina data i en samling diskutrymmen, som representeras av LogExtent instanser. Omfattningarna i en viss LogStore instans är alla av enhetlig storlek och utrymmet läggs till och tas bort från en LogStore instans i utsträckningssteg. Om du vill lägga till och ta bort loggens omfattningar använder Add du -metoderna och Remove för LogExtentCollection objektet, som kan returneras av Extents egenskapen.

En LogStore instans kan ha principer associerade med den. Dessa representeras av LogPolicy instanser som kan returneras av Policy egenskapen. En princip dikterar regler som loggen försöker följa, till exempel maximalt antal omfattningar och minsta storlek, samt instruktioner om att växa eller krympa LogStore under vissa förhållanden. Dessutom kan du ange om en LogStore instans kan arkiveras. Principer anges per logg och är flyktiga, vilket innebär att principen inte längre finns när varje handtag till loggen stängs.

Konstruktorer

Name Description
LogStore(SafeFileHandle)

Initierar en ny instans av LogStore klassen för det angivna handtaget.

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

Initierar en ny instans av LogStore klassen.

LogStore(String, FileMode, FileAccess, FileShare)

Initierar en ny instans av LogStore klassen.

LogStore(String, FileMode, FileAccess)

Initierar en ny instans av LogStore klassen med den angivna sökvägen, läget och åtkomsten.

LogStore(String, FileMode)

Initierar en ny instans av LogStore klassen med den angivna sökvägen och läget.

Egenskaper

Name Description
Archivable

Hämtar ett värde som anger om den här LogStore instansen kan arkiveras.

BaseSequenceNumber

Hämtar det lägsta sekvensnumret som motsvarar en giltig post i den här LogStore instansen.

Extents

Hämtar insamlingen av loggutbredningar som innehåller data för det här logglagret.

FreeBytes

Hämtar antalet tillgängliga byte i loggarkivet.

Handle

Hämtar operativsystemets filhandtag för loggfilen som den aktuella LogStore instansen kapslar in.

LastSequenceNumber

När den åsidosättas i en härledd klass hämtar sekvensnumret för nästa post som ska läggas till i loggarkivet.

Length

Hämtar loggarkivets storlek i byte.

Policy

Hämtar principen som är associerad med det här loggarkivet.

StreamCount

Hämtar antalet loggströmmar i det här loggarkivet.

Metoder

Name Description
CreateLogArchiveSnapshot()

Tar en ögonblicksbild av logglagringstillståndet för att göra en säkerhetskopia.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Tar en ögonblicksbild av logglagringstillståndet mellan de angivna sekvensnumren för att göra en säkerhetskopia.

Delete(String)

Tar bort loggarkivet.

Dispose()

Släpper alla resurser som används av LogStore.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
SetArchiveTail(SequenceNumber)

Anger sekvensnumret för arkivsvansen.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för