LogStore Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un stockage structuré par journal.
public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
- Héritage
-
LogStore
- Implémente
Exemples
L'exemple suivant montre comment archiver un LogStore dans un document 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
Remarques
La classe LogRecordSequence fournit une implémentation de l'interface de séquence d'enregistrement sur un journal CLFS (Common Log File System). Cela fonctionne avec la classe LogStore qui fournit une interface pour manipuler et gérer directement un fichier journal CLFS. Un magasin de journaux fournit le stockage en ajout seul pour un ensemble d'étendues de disque. La classe LogStore représente ce stockage et fournit des méthodes pour ajouter et supprimer des conteneurs, définir la stratégie et créer des archives. Elle ne fournit pas de méthodes pour lire et écrire à partir du stockage. Ces méthodes sont fournies par la classe LogRecordSequence.
La relation entre la classe LogStore et la classe LogRecordSequence est similaire à la relation entre un fichier sur un disque et un objet FileStream. Le fichier sur disque fournit la mémoire physique et a des attributs tels que la longueur et le dernier temps d'accès, alors que l'objet FileStream fournit une vue sur le fichier qui peut être utilisée pour la lecture et l'écriture. De la même façon, la classe LogStore a des attributs tels qu'une stratégie et une collection d'étendues de disque, et la classe LogRecordSequence fournit un mécanisme orienté par enregistrement pour lire et écrire des données.
Contrairement à la séquence d'enregistrement de fichier représentée par la classe FileRecordSequence, une instance LogStore stocke ses données dans une collection d'étendues de disque, représentée par les instances LogExtent. Les étendues dans une instance LogStore donnée sont toutes de taille uniforme et l'espace est ajouté et supprimé d'une instance LogStore par incréments d'étendue. Pour ajouter et supprimer des étendues de journal, utilisez les méthodes Add et Remove de l'objet LogExtentCollection, qui peut être retourné par la propriété Extents.
Des stratégies peuvent être associées à une instance LogStore. Elles sont représentées par les instances LogPolicy qui peuvent être retournées par la propriété Policy. Une stratégie énonce les règles que le journal tente de suivre, tel que le nombre maximal d'étendues et la taille minimale, et fournit des instructions à propos de l'agrandissement ou de la réduction de la taille du LogStore sous certaines conditions. De plus, vous pouvez spécifier si une instance LogStore peut être archivée. Les stratégies sont définies par journal et ne sont pas rémanentes, ce qui signifie qu'une fois que chaque handle du journal est fermé, la stratégie n'existe plus.
Constructeurs
LogStore(SafeFileHandle) |
Initialise une nouvelle instance de la classe LogStore pour le handle spécifié. |
LogStore(String, FileMode) |
Initialise une nouvelle instance de la classe LogStore avec le chemin d'accès et le mode spécifiés. |
LogStore(String, FileMode, FileAccess) |
Initialise une nouvelle instance de la classe LogStore avec le chemin d'accès, le mode et l'accès spécifiés. |
LogStore(String, FileMode, FileAccess, FileShare) |
Initialise une nouvelle instance de la classe LogStore. |
LogStore(String, FileMode, FileAccess, FileShare, FileSecurity) |
Initialise une nouvelle instance de la classe LogStore. |
Propriétés
Archivable |
Obtient une valeur qui indique si cette instance LogStore peut être archivée. |
BaseSequenceNumber |
Obtient le numéro de séquence le plus bas qui correspond à un enregistrement valide dans cette instance LogStore. |
Extents |
Obtient la collection des étendues de journal qui contient les données pour ce magasin de journaux. |
FreeBytes |
Obtient le nombre d'octets disponible dans le magasin de journaux. |
Handle |
Obtient le handle de fichier du système d'exploitation pour le fichier journal encapsulé par l'instance LogStore active. |
LastSequenceNumber |
En cas de substitution dans une classe dérivée, obtient le numéro de séquence de l'enregistrement suivant à ajouter au magasin de journaux. |
Length |
Obtient la taille du magasin de journaux en octets. |
Policy |
Obtient la stratégie associée à ce magasin de journaux. |
StreamCount |
Obtient le nombre de flux de journal dans ce magasin de journaux. |
Méthodes
CreateLogArchiveSnapshot() |
Prend un instantané de l'état du magasin de journaux pour effectuer une sauvegarde. |
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Prend un instantané de l'état du magasin de journaux entre les numéros de séquence spécifiés pour effectuer une sauvegarde. |
Delete(String) |
Supprime le magasin de journaux. |
Dispose() |
Libère toutes les ressources utilisées par LogStore. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
SetArchiveTail(SequenceNumber) |
Définit le numéro de séquence de la fin de l'archive. |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |