Compartilhar via


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 a seguir mostra como arquivar um LogStore em um 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

Comentários

A LogRecordSequence classe fornece uma implementação da interface de sequência de registros sobre um log CLFS (Common Log File System). Ele funciona com a LogStore classe , que fornece uma interface para manipular e gerenciar diretamente um arquivo de log CLFS. Um repositório de logs fornece armazenamento somente acréscimo em um conjunto de extensões de disco. A LogStore classe representa esse armazenamento e fornece métodos para adicionar e remover contêineres, definir a política e criar arquivos. Ele não fornece métodos para leitura e gravação no armazenamento; esses métodos são fornecidos pela LogRecordSequence classe .

A relação entre a LogStore classe e a LogRecordSequence classe é semelhante à relação entre um arquivo de disco e um FileStream objeto . O arquivo de disco fornece o armazenamento real e tem atributos como comprimento e hora do último acesso, enquanto o FileStream objeto fornece uma exibição no arquivo que pode ser usada para ler e gravar nele. Da mesma forma, 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 registros para ler e gravar dados.

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

Uma LogStore instância pode ter políticas associadas a ela. Eles são representados por LogPolicy instâncias que podem ser retornadas pela Policy propriedade . Uma política determina regras que o log tentará seguir, como número máximo de extensões e tamanho mínimo, e instruções sobre como aumentar ou reduzir o LogStore em determinadas condições. Além disso, você pode especificar se uma LogStore instância pode ser arquivada. As políticas são definidas por log e são voláteis, o que significa que uma vez que cada identificador para o log é fechado, a política não existe mais.

Construtores

LogStore(SafeFileHandle)

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

LogStore(String, FileMode)

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

LogStore(String, FileMode, FileAccess)

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

LogStore(String, FileMode, FileAccess, FileShare)

Inicializa uma nova instância da classe LogStore.

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

Inicializa uma nova instância da classe LogStore.

Propriedades

Archivable

Obtém um valor que indica se esta instância LogStore pode ser arquivada.

BaseSequenceNumber

Obtém o número de sequência mais baixo que corresponde a um registro válido nesta instância LogStore.

Extents

Obtém a coleção de extensões de log que contêm os dados para este repositório de log.

FreeBytes

Obtém o número de bytes disponíveis no repositório de log.

Handle

Obtém o identificador de arquivo do sistema operacional para o arquivo de log que a instância LogStore atual encapsula.

LastSequenceNumber

Quando substituído em uma classe derivada, obtém o número de sequência do próximo registro a ser anexado ao repositório de log.

Length

Obtém o tamanho do repositório de log, em bytes.

Policy

Obtém a política associada a este repositório de log.

StreamCount

Obtém o número de fluxos de log nesse repositório de log.

Métodos

CreateLogArchiveSnapshot()

Captura um instantâneo do estado do repositório de log para fazer um backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Captura um instantâneo do estado do repositório de log entre os números de sequência especificado para fazer um backup.

Delete(String)

Remove o repositório de log.

Dispose()

Libera todos os recursos usados pelo LogStore.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
SetArchiveTail(SequenceNumber)

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a