LogStore Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje úložiště strukturované protokolem.
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í sekvence záznamů nad protokolem CLFS (Common Log File System). Funguje s LogStore třídou, která poskytuje rozhraní pro přímou manipulaci a správu souboru protokolu CLFS. Úložiště protokolů poskytuje úložiště jen pro připojení napříč sadou rozsahů disku. 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í 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 . Diskový soubor poskytuje skutečné úložiště a má atributy, jako je délka a čas posledního přístupu, zatímco FileStream objekt poskytuje zobrazení souboru, který lze použít ke čtení z něj a zápisu do něj. Podobně třída má atributy jako LogStore zásady a kolekci rozsahů disků a LogRecordSequence třída poskytuje mechanismus orientovaný na záznamy pro čtení a zápis dat.
Na rozdíl od posloupnosti záznamů souboru reprezentované FileRecordSequence třídou LogStore instance ukládá data do kolekce rozsahů disku reprezentované LogExtent instancemi. Rozsahy v dané LogStore instanci mají stejnou velikost a mezery se přidají a odeberou LogStore z instance v přírůstcích. Chcete-li přidat a odebrat rozsahy protokolu, použijte Add a Remove metody objektu LogExtentCollection , které mohou být vráceny Extents vlastností.
Instance LogStore může mít přidružené zásady. Jsou reprezentovány LogPolicy instancemi, které mohou být vráceny Policy vlastností. Zásada určuje pravidla, která se protokol pokusí sledovat, například maximální počet rozsahů a minimální velikost, a pokyny pro zvětšení nebo zmenšení LogStore za určitých podmínek. Kromě toho můžete určit, jestli LogStore je možné instanci archivovat. Zásady se nastavují na protokol a jsou nestálé, což znamená, že po uzavření každého popisovače protokolu už zásada neexistuje.
Konstruktory
| Name | Description |
|---|---|
| LogStore(SafeFileHandle) |
Inicializuje novou instanci LogStore třídy pro zadaný popisovač. |
| LogStore(String, FileMode, FileAccess, FileShare, FileSecurity) |
Inicializuje novou instanci LogStore třídy. |
| LogStore(String, FileMode, FileAccess, FileShare) |
Inicializuje novou instanci LogStore třídy. |
| LogStore(String, FileMode, FileAccess) |
Inicializuje novou instanci LogStore třídy se zadanou cestou, režimem a přístupem. |
| LogStore(String, FileMode) |
Inicializuje novou instanci LogStore třídy se zadanou cestou a režimem. |
Vlastnosti
| Name | Description |
|---|---|
| Archivable |
Získá hodnotu urč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 má připojit 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ů protokolů v tomto úložišti protokolů. |
Metody
| Name | Description |
|---|---|
| CreateLogArchiveSnapshot() |
Vytvoří snímek stavu úložiště protokolů pro vytvoření zálohy. |
| CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Vytvoří 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čuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| SetArchiveTail(SequenceNumber) |
Nastaví pořadové číslo archivního chvostu. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |