LogStore Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un archivio organizzato in log.
public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
- Ereditarietà
-
LogStore
- Implementazioni
Esempio
Nell'esempio seguente viene illustrato come memorizzare un LogStore in un documento 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
Commenti
La classe LogRecordSequence fornisce un'implementazione dell'interfaccia della sequenza di record all'inizio di un log Common Log File System (CLFS). Questa classe viene utilizzata insieme alla classe LogStore che fornisce un'interfaccia per la modifica e la gestione diretta di un file di log CLFS. Un archivio di log fornisce un'archiviazione a solo accodamento in un set di extent del disco. La classe LogStore rappresenta quest'archiviazione e fornisce metodi per l'aggiunta e la rimozione di contenitori, per l'impostazione di criteri e per la creazione di archivi. Non fornisce metodi per la lettura e la scrittura nell'archivio. Questi metodi vengono forniti dalla classe LogRecordSequence.
La relazione tra la classe LogStore e la classe LogRecordSequence è simile alla relazione tra un file del disco e un oggetto FileStream. Il file del disco fornisce l'archivio effettiva e dispone di attributi quali la lunghezza e l'ora dell'ultimo accesso, mentre l'oggetto FileStream fornisce una visualizzazione del file che può essere utilizzata per operazioni di lettura o scrittura su di esso. Analogamente, la classe LogStore dispone di attributi quali i criteri e una raccolta di extent del disco e la classe LogRecordSequence fornisce un meccanismo orientato ai record per la lettura e la scrittura di dati.
Diversamente dalla sequenza di record di file rappresentata dalla classe FileRecordSequence, un'istanza LogStore memorizza i relativi dati in una raccolta di extent del disco, rappresentati da istanze LogExtent. Gli extent di una determinata istanza LogStore sono tutti della stessa dimensione e lo spazio viene aggiunto e rimosso da un'istanza LogStore per incrementi di extent. Per aggiungere e rimuovere extent del log, utilizzare i metodi Add e Remove dell'oggetto LogExtentCollection che può essere restituito dalla proprietà Extents.
A un'istanza LogStore possono essere associati criteri. Questi criteri sono rappresentati da istanze LogPolicy che possono essere restituite dalla proprietà Policy. I criteri specificano le regole che il log tenterà di seguire, ad esempio il numero massimo di extent e la dimensione minima, nonché le istruzioni sull'aumento o la riduzione dell'istanza LogStore in determinate condizioni. In inoltre possibile specificare se un'istanza LogStore può essere archiviata. I criteri vengono impostati per ogni singolo log e sono volatili. Ciò significa che, dopo la chiusura dell'ultimo handle del log, i criteri non esistono più.
Costruttori
LogStore(SafeFileHandle) |
Inizializza una nuova istanza della classe LogStore per l'handle specificato. |
LogStore(String, FileMode) |
Inizializza una nuova istanza della classe LogStore con il percorso e la modalità specificati. |
LogStore(String, FileMode, FileAccess) |
Inizializza una nuova istanza della classe LogStore con il percorso, la modalità e l'accesso specificati. |
LogStore(String, FileMode, FileAccess, FileShare) |
Inizializza una nuova istanza della classe LogStore. |
LogStore(String, FileMode, FileAccess, FileShare, FileSecurity) |
Inizializza una nuova istanza della classe LogStore. |
Proprietà
Archivable |
Ottiene un valore che indica se questa istanza LogStore può essere archiviata. |
BaseSequenceNumber |
Ottiene il numero di sequenza più basso che corrisponde a un record valido in questa istanza LogStore. |
Extents |
Ottiene la raccolta di extent del log che contengono i dati per questo archivio dei log. |
FreeBytes |
Ottiene il numero di byte disponibili nell'archivio dei log. |
Handle |
Ottiene l'handle di file del sistema operativo per il file di log incapsulato nell'istanza LogStore corrente. |
LastSequenceNumber |
Quando sottoposto a override in una classe derivata, ottiene il numero di sequenza del record successivo da accodare all'archivio dei log. |
Length |
Ottiene la dimensione, in byte, dell'archivio dei log. |
Policy |
Ottiene i criteri associati a questo archivio dei log. |
StreamCount |
Ottiene il numero di flussi di registrazione in questo archivio dei log. |
Metodi
CreateLogArchiveSnapshot() |
Crea uno snapshot dello stato dell'archivio dei log per eseguire un backup. |
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Crea uno snapshot dello stato dell'archivio dei log tra i numeri di sequenza specificati per l'esecuzione di un backup. |
Delete(String) |
Rimuove l'archivio dei log. |
Dispose() |
Rilascia tutte le risorse usate da LogStore. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
SetArchiveTail(SequenceNumber) |
Imposta il numero di sequenza della coda di archiviazione. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |