LogStore Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un almacenamiento estructurado del registro.
public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
- Herencia
-
LogStore
- Implementaciones
Ejemplos
El ejemplo siguiente muestra cómo archivar LogStore en 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
Comentarios
La clase LogRecordSequence proporciona una implementación de la interfaz de secuencia de registro encima de un registro de Sistema de Registro Archivo Común (CLFS). Funciona con la clase LogStore, que proporciona una interfaz para manipular directamente y administrar un archivo de registro de CLFS. Un almacén de registro proporciona el almacenamiento de sólo anexar por un conjunto de extensiones del disco. La clase LogStore representa este almacenamiento y proporciona métodos para agregar y quitar contenedores, configurar una directiva y crear archivos. No proporciona los métodos para leer de y escribir en el almacenamiento; la clase LogRecordSequence proporciona estos métodos.
La relación entre la clase LogStore y la clase LogRecordSequence es similar a la relación entre un archivo de disco y un objeto FileStream. El archivo de disco proporciona el almacenamiento real y tiene atributos como longitud y último tiempo de acceso, mientras que el objeto FileStream proporciona una vista en el archivo que se puede utilizar para leer de él y para escribir en él. De igual forma, la clase LogStore tiene los atributos como una directiva y una colección de extensiones del disco y la clase LogRecordSequence proporciona un mecanismo orientado a registro para leer y escribir los datos.
A diferencia de la secuencia de registro de archivo representada por la clase FileRecordSequence, una instancia LogStore almacena sus datos en una colección de extensiones del disco, representada por instancias LogExtent. Las extensiones en una instancia LogStore determinada son todas de tamaño uniforme y el espacio se agrega a y se quita de una instancia LogStore en incrementos de la extensión. Para agregar y quitar las extensiones del registro, utilice Add y los métodos Remove del objeto LogExtentCollection, que puede ser devuelto por la propiedad Extents.
Una instancia LogStore puede tener las directivas asociadas a él. Éstas están representadas por las instancias LogPolicy que pueden ser devueltas por la propiedad Policy . Una directiva dicta reglas que el registro intentará seguir, como número máximo de extensiones y tamaño mínimo e instrucciones en crecer o reducir LogStore bajo ciertas condiciones. Además, puede especificar si una instancia LogStore puede estar almacenada. Las directivas se establecen para cada registro y son volátiles, lo que significa que una vez se cierra cada controlador del registro, la directiva deja de existir.
Constructores
LogStore(SafeFileHandle) |
Inicializa una nueva instancia de la clase LogStore para un identificador especificado. |
LogStore(String, FileMode) |
Inicializa una nueva instancia de la clase LogStore con el trazado especificado y el modo. |
LogStore(String, FileMode, FileAccess) |
Inicializa una nueva instancia de la clase LogStore con el trazado especificado, el modo y el acceso. |
LogStore(String, FileMode, FileAccess, FileShare) |
Inicializa una nueva instancia de la clase LogStore. |
LogStore(String, FileMode, FileAccess, FileShare, FileSecurity) |
Inicializa una nueva instancia de la clase LogStore. |
Propiedades
Archivable |
Obtiene un valor que indica si esta instancia LogStore puede almacenarse. |
BaseSequenceNumber |
Obtiene el número de secuencia más bajo que corresponde a un registro válido en las instanciasLogStore. |
Extents |
Obtiene la colección de extensiones del registro que contienen los datos para este almacén del registro. |
FreeBytes |
Obtiene el número de bytes disponible en el almacén del registro. |
Handle |
Obtiene el identificador de archivo del sistema operativo correspondiente al archivo de registro que la instancia actual LogStore encapsula. |
LastSequenceNumber |
Cuando se invalida en una clase derivada, consigue anexar el número de secuencia del registro siguiente al almacén del registro. |
Length |
Obtiene el tamaño del almacén de registro en bytes. |
Policy |
Obtiene la directiva asociada a este almacén del registro. |
StreamCount |
Obtiene el número de secuencias de registro de este almacén de registro. |
Métodos
CreateLogArchiveSnapshot() |
Toma una captura del estado de almacén de registro para realizar una copia de seguridad. |
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Toma una captura del estado de almacén de registro entre los números de secuencia especificados para realizar una copia de seguridad. |
Delete(String) |
Quita el almacén del registro. |
Dispose() |
Libera todos los recursos que usa LogStore. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
SetArchiveTail(SequenceNumber) |
Establece el número de secuencia de la cola del archivo. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |