LogStore.CreateLogArchiveSnapshot Metoda

Definice

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

Přetížení

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.

CreateLogArchiveSnapshot()

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

public:
 System::IO::Log::LogArchiveSnapshot ^ CreateLogArchiveSnapshot();
public System.IO.Log.LogArchiveSnapshot CreateLogArchiveSnapshot ();
member this.CreateLogArchiveSnapshot : unit -> System.IO.Log.LogArchiveSnapshot
Public Function CreateLogArchiveSnapshot () As LogArchiveSnapshot

Návraty

Objekt LogArchiveSnapshot , který obsahuje stav potřebný k vytvoření archivu.

Výjimky

Úložiště protokolů není archivovatelné.

Metoda byla volána po odstranění sekvence.

Při vytváření archivním snímku dojde k vstupně-výstupní chybě.

Argument není platný.

Byla provedena neplatná operace.

Pro pokračování v provádění programu není dostatek paměti.

Posloupnost záznamů je plná.

Operační systém odepře přístup k zadanému úložišti protokolů.

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

Platí pro

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

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

public:
 System::IO::Log::LogArchiveSnapshot ^ CreateLogArchiveSnapshot(System::IO::Log::SequenceNumber first, System::IO::Log::SequenceNumber last);
public System.IO.Log.LogArchiveSnapshot CreateLogArchiveSnapshot (System.IO.Log.SequenceNumber first, System.IO.Log.SequenceNumber last);
member this.CreateLogArchiveSnapshot : System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber -> System.IO.Log.LogArchiveSnapshot
Public Function CreateLogArchiveSnapshot (first As SequenceNumber, last As SequenceNumber) As LogArchiveSnapshot

Parametry

first
SequenceNumber

Počáteční pořadové číslo v rozsahu, který se má archivovat.

last
SequenceNumber

Koncové pořadové číslo v rozsahu, který se má archivovat.

Návraty

Objekt LogArchiveSnapshot , který obsahuje stav potřebný k vytvoření archivu.

Výjimky

first nebo last není mezi základním a posledním pořadovými čísly této sekvence.

first je větší než last.

Byla provedena neplatná operace.

Při vytváření archivním snímku dojde k vstupně-výstupní chybě.

Úložiště protokolů není archivovatelné.

Metoda byla volána po odstranění sekvence.

Pro pokračování v provádění programu není dostatek paměti.

Posloupnost záznamů je plná.

Operační systém odepře přístup k zadanému úložišti protokolů.

Poznámky

Archivní snímek vrácený touto metodou zahrnuje informace od základního pořadového čísla nebo pořadového čísla archivu, podle toho, které je nižší, až po poslední pořadové číslo. Není inkluzivní pro poslední pořadové číslo, což znamená, že archiv obsahuje pouze záznamy až do posledního, ale nikoli včetně posledního. Kromě toho při použití této metody musí být počáteční SequenceNumber rovna BaseSequenceNumber, aby archiv byl konzistentní.

Platí pro