LogStore Classe

Definição

Representa um armazenamento estruturado em log.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
Herança
LogStore
Implementações

Exemplos

O exemplo seguinte mostra como arquivar a LogStore num 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

Observações

A LogRecordSequence classe fornece uma implementação da interface de sequência de registos sobre um registo do Common Log File System (CLFS). Funciona com a LogStore classe, que fornece uma interface para manipular e gerir diretamente um ficheiro de registo CLFS. Um armazenamento de registos fornece armazenamento apenas para acréscimos num conjunto de extensões de disco. A LogStore classe representa este armazenamento e fornece métodos para adicionar e remover contentores, definir políticas e criar arquivos. Não fornece métodos para ler e escrever no armazenamento; Estes métodos são fornecidos pela LogRecordSequence turma.

A relação entre a LogStore classe e a LogRecordSequence classe é semelhante à relação entre um ficheiro de disco e um FileStream objeto. O ficheiro de disco fornece o armazenamento real e tem atributos como comprimento e último tempo de acesso, enquanto o FileStream objeto fornece uma vista sobre o ficheiro que pode ser usada para ler e escrever nele. De forma semelhante, a LogStore classe tem atributos como uma política e uma coleção de extensões de disco, e a LogRecordSequence classe fornece um mecanismo orientado a registos para ler e escrever dados.

Ao contrário da sequência de registos de ficheiro representada pela FileRecordSequence classe, uma LogStore instância armazena os seus dados numa coleção de extensões de disco, representadas por LogExtent instâncias. As extensões numa dada LogStore instância são todas de tamanho uniforme, e espaço é adicionado e removido de uma LogStore instância em incrementos de extensão. Para adicionar e remover extensões logarítmicas, use os Add métodos e Remove do LogExtentCollection objeto, que podem ser devolvidos pela Extents propriedade.

Uma LogStore instância pode ter políticas associadas. Estas são representadas por LogPolicy instâncias que podem ser devolvidas pela Policy propriedade. Uma política dita regras que o tronco tentará seguir, como o número máximo de extensões e o tamanho mínimo, e instruções para aumentar ou encolher as LogStore extensões sob certas condições. Além disso, pode especificar se uma LogStore instância pode ser arquivada. As apólices são definidas por log e são voláteis, o que significa que, uma vez que todos os handles do log são fechados, a política deixa de existir.

Construtores

Name Description
LogStore(SafeFileHandle)

Inicializa uma nova instância da LogStore classe para o handle especificado.

LogStore(String, FileMode, FileAccess, FileShare, FileSecurity)

Inicializa uma nova instância da LogStore classe.

LogStore(String, FileMode, FileAccess, FileShare)

Inicializa uma nova instância da LogStore classe.

LogStore(String, FileMode, FileAccess)

Inicializa uma nova instância da LogStore classe com o caminho, modo e acesso especificados.

LogStore(String, FileMode)

Inicializa uma nova instância da LogStore classe com o caminho e modo especificados.

Propriedades

Name Description
Archivable

Recebe um valor que indica se esta LogStore instância pode ser arquivada.

BaseSequenceNumber

Obtém o número de sequência mais baixo que corresponde a um registo válido neste LogStore caso.

Extents

Obtém a coleção de extensões logarítmicas que contêm os dados para este armazenamento de log.

FreeBytes

Obtém o número de bytes disponíveis na loja de registos.

Handle

Obtém o handle do ficheiro do sistema operativo para o ficheiro de log que a instância atual LogStore encapsula.

LastSequenceNumber

Quando sobrescrito numa classe derivada, obtém o número de sequência do registo seguinte a ser adicionado ao armazenamento de log.

Length

Obtém o tamanho do log store, em bytes.

Policy

Obtém a política associada a este armazenamento de logs.

StreamCount

Obtém o número de fluxos de logs neste armazenamento de logs.

Métodos

Name Description
CreateLogArchiveSnapshot()

Tira uma imagem do estado do log store para fazer um backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Tira um instantâneo do estado do log store entre os números de sequência especificados para fazer uma cópia de segurança.

Delete(String)

Remove o armazenamento de logs.

Dispose()

Liberta todos os recursos utilizados pelo LogStore.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
SetArchiveTail(SequenceNumber)

Define o número de sequência da cauda do arquivo.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a