Compartir vía


LogStore Clase

Definición

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)

Se aplica a