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 sie ein LogStore XML-Dokument archivieren.
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 über einem CLFS-Protokoll (Common Log File System) bereit. Es funktioniert mit der LogStore Klasse, die eine Schnittstelle zum direkten Bearbeiten und Verwalten einer CLFS-Protokolldatei bereitstellt. Ein Protokollspeicher bietet nur Anfügespeicher über eine Reihe von Datenträgerausdehnungen hinweg. Die LogStore Klasse stellt diesen Speicher dar und stellt Methoden zum Hinzufügen und Entfernen von Containern, Festlegen von Richtlinien und Erstellen von Archiven bereit. Es bietet keine Methoden zum Lesen und Schreiben in den 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 tatsächlichen Speicher bereit und verfügt über Attribute wie Länge und Uhrzeit des letzten Zugriffs, während das FileStream Objekt eine Ansicht der Datei bereitstellt, die zum Lesen und Schreiben verwendet werden kann. Ebenso verfügt die LogStore Klasse über Attribute wie eine Richtlinie und eine Sammlung von Datenträgerausdehnungen, und die LogRecordSequence Klasse stellt einen datensatzorientierten Mechanismus zum Lesen und Schreiben von Daten bereit.
Im Gegensatz zur durch die FileRecordSequence Klasse dargestellten Dateidatensatzsequenz speichert eine LogStore Instanz ihre Daten in einer Sammlung von Datenträgerausdehnungen, dargestellt durch LogExtent Instanzen. Die Ausdehnungen in einer bestimmten LogStore Instanz sind alle einheitliche Größe, und Speicherplatz wird zu einer LogStore Instanz hinzugefügt und entfernt, soweit inKrementierungen. Verwenden Sie zum Hinzufügen und Entfernen von Protokollausdehnungen die Add Methoden Remove des LogExtentCollection Objekts, die von der Extents Eigenschaft zurückgegeben werden können.
Eine LogStore Instanz kann Richtlinien zugeordnet haben. Diese werden durch LogPolicy Instanzen dargestellt, die von der Policy Eigenschaft zurückgegeben werden können. Eine Richtlinie bestimmt Regeln, denen das Protokoll folgen wird, z. B. maximale Anzahl von Ausmaßen und Mindestgröße, und Anweisungen zum Vergrößern oder Verkleinern der LogStore Protokolle unter bestimmten Bedingungen. Darüber hinaus können Sie angeben, ob eine LogStore Instanz archiviert werden kann. Richtlinien werden pro Protokoll festgelegt und sind veränderlich. Dies bedeutet, dass die Richtlinie nicht mehr vorhanden ist, sobald jedes Handle für das Protokoll geschlossen wurde.
Konstruktoren
| Name | Beschreibung |
|---|---|
| LogStore(SafeFileHandle) |
Initialisiert eine neue Instanz der LogStore Klasse für das angegebene Handle. |
| LogStore(String, FileMode, FileAccess, FileShare, FileSecurity) |
Initialisiert eine neue Instanz der LogStore-Klasse. |
| LogStore(String, FileMode, FileAccess, FileShare) |
Initialisiert eine neue Instanz der LogStore-Klasse. |
| LogStore(String, FileMode, FileAccess) |
Initialisiert eine neue Instanz der LogStore Klasse mit dem angegebenen Pfad, Modus und Zugriff. |
| LogStore(String, FileMode) |
Initialisiert eine neue Instanz der LogStore Klasse mit dem angegebenen Pfad und Modus. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| 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 Sammlung von Protokollausdehnungen ab, die die Daten für diesen Protokollspeicher enthalten. |
| FreeBytes |
Ruft die Anzahl der im Protokollspeicher verfügbaren Bytes ab. |
| Handle |
Ruft das Betriebssystemdateihandle für die Protokolldatei ab, die von der aktuellen LogStore Instanz gekapselt wird. |
| LastSequenceNumber |
Beim Überschreiben in einer abgeleiteten Klasse ruft die Sequenznummer des nächsten Datensatzes ab, der an den Protokollspeicher angefügt werden soll. |
| Length |
Ruft die Größe des Protokollspeichers in Byte ab. |
| Policy |
Ruft die Richtlinie ab, die diesem Protokollspeicher zugeordnet ist. |
| StreamCount |
Ruft die Anzahl der Protokolldatenströme in diesem Protokollspeicher ab. |
Methoden
| Name | Beschreibung |
|---|---|
| CreateLogArchiveSnapshot() |
Erstellt eine Momentaufnahme des Protokollspeicherstatus zum Erstellen einer Sicherung. |
| CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Erstellt eine Momentaufnahme des Protokollspeicherzustands zwischen den angegebenen Sequenznummern zum Erstellen einer Sicherung. |
| Delete(String) |
Entfernt den Protokollspeicher. |
| Dispose() |
Veröffentlicht alle ressourcen, die von der LogStore. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| SetArchiveTail(SequenceNumber) |
Legt die Sequenznummer des Archivschwanzs fest. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |