LogStore Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen protokollstrukturierten Speicher dar.
public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
- Vererbung
-
LogStore
- Implementiert
Beispiele
Das folgende Beispiel zeigt, wie ein LogStore in einem XML-Dokument archiviert wird.
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
Hinweise
Die LogRecordSequence-Klasse stellt eine Implementierung der Datensatzsequenzschnittstelle auf einem CLFS-Protokoll (gemeinsames Protokolldateisystem) bereit. Die Funktionsweise erfolgt in Kombination mit der LogStore-Klasse, die eine Schnittstelle für die direkte Bearbeitung und Verwaltung einer CLFS-Protokolldatei bereitstellt. Ein Protokollspeicher stellt einen nur erweiterbaren Speicher für einen Satz Datenträgerwertebereiche bereit. Die LogStore-Klasse stellt diesen Speicher dar und bietet Methoden zum Hinzufügen und Entfernen von Containern, Festlegen von Richtlinien und Erstellen von Archiven. Sie bietet keine Methoden zum Lesen oder Schreiben im Speicher; diese Methoden werden von der LogRecordSequence-Klasse bereitgestellt.
Die Beziehung zwischen der LogStore-Klasse und der LogRecordSequence-Klasse ähnelt der Beziehung zwischen einer Datenträgerdatei und einem FileStream-Objekt. Die Datenträgerdatei stellt den Speicherplatz bereit und weist Attribute wie die Länge und den letzten Zugriff auf, während das FileStream-Objekt eine Ansicht der Datei bereitstellt, über die in der Datei gelesen und geschrieben werden kann. Die LogStore-Klasse weist Attribute wie eine Richtlinie und eine Auflistung von Datenträgerwertebereichen auf, und die LogRecordSequence-Klasse bietet einen datensatzorientierten Mechanismus zum Lesen und Schreiben von Daten.
Anders als die Dateidatensatzsequenz, die von der FileRecordSequence-Klasse dargestellt wird, speichert eine LogStore-Instanz ihre Daten in einer Auflistung von Datenträgerwertebereichen, die von LogExtent-Instanzen dargestellt werden. Die Wertebereiche in einer bestimmten LogStore-Instanz weisen eine einheitliche Größe auf. Speicherplatz wird einer LogStore-Instanz in Wertebereichsschritten hinzugefügt oder daraus gelöscht. Verwenden Sie zum Hinzufügen und Entfernen von Protokollwertebereichen die Add-Methode und die Remove-Methode des LogExtentCollection-Objekts, die von der Extents-Eigenschaft zurückgegeben werden können.
Eine LogStore-Instanz kann zugeordnete Richtlinien aufweisen. Diese werden durch LogPolicy-Instanzen dargestellt, die von der Policy-Eigenschaft zurückgegeben werden. Eine Richtlinie schreibt bestimmte Regeln vor, die das Protokoll zu befolgen versucht, beispielsweise die Maximal- und die Mindestanzahl an Wertebereichen oder Anweisungen zum Erweitern oder Verkleinern der LogStore unter bestimmten Bedingungen. Außerdem können Sie angeben, ob eine LogStore-Instanz archiviert werden kann. Richtlinien werden pro Protokoll festgelegt und sind flüchtig, das heißt, sobald jedes Handle für das Protokoll geschlossen wurde, existiert die Richtlinie nicht mehr.
Konstruktoren
LogStore(SafeFileHandle) |
Initialisiert eine neue Instanz der LogStore-Klasse für das angegebene Handle. |
LogStore(String, FileMode) |
Initialisiert eine neue Instanz der LogStore-Klasse mit dem angegebenen Pfad und Modus. |
LogStore(String, FileMode, FileAccess) |
Initialisiert eine neue Instanz der LogStore-Klasse mit dem angegebenen Pfad, Modus und Zugriff. |
LogStore(String, FileMode, FileAccess, FileShare) |
Initialisiert eine neue Instanz der LogStore-Klasse. |
LogStore(String, FileMode, FileAccess, FileShare, FileSecurity) |
Initialisiert eine neue Instanz der LogStore-Klasse. |
Eigenschaften
Archivable |
Ruft einen Wert ab, der angibt, ob diese LogStore-Instanz archiviert werden kann. |
BaseSequenceNumber |
Ruft die niedrigste Sequenznummer ab, die einem gültigen Datensatz in dieser LogStore-Instanz entspricht. |
Extents |
Ruft die Auflistung von Protokollwertebereichen ab, die die Daten für diesen Protokollspeicher enthalten. |
FreeBytes |
Ruft die Anzahl von Byte ab, die im Protokollspeicher verfügbar sind. |
Handle |
Ruft das Dateihandle des Betriebssystems für die Protokolldatei ab, die von der aktuellen LogStore-Instanz eingekapselt wird. |
LastSequenceNumber |
Ruft beim Überschreiben in einer abgeleiteten Klasse die Sequenznummer des nächsten Datensatzes ab, der dem Protokollspeicher angefügt werden soll. |
Length |
Ruft die Größe des Protokollspeichers in Byte ab. |
Policy |
Ruft die diesem Protokollspeicher zugeordnete Richtlinie ab. |
StreamCount |
Ruft die Anzahl der Protokoll-Streams in diesem Protokollspeicher ab. |
Methoden
CreateLogArchiveSnapshot() |
Nimmt zum Erstellen einer Sicherung eine Momentaufnahme des Protokollspeicherzustands auf. |
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Nimmt zum Erstellen einer Sicherungskopie eine Momentaufnahme des Protokollspeicherzustands zwischen den angegebenen Sequenznummern auf. |
Delete(String) |
Entfernt den Protokollspeicher. |
Dispose() |
Gibt alle vom LogStore verwendeten Ressourcen frei. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
SetArchiveTail(SequenceNumber) |
Legt die Sequenznummer des Archivendes fest. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |