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 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 na parte superior de 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 tempo de acesso final, 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, representada 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 métodos e Remove o AddLogExtentCollection objeto, que podem ser retornados pela Extents propriedade.

Uma LogStore instância pode ter políticas associadas a ela. Elas são representadas 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 em LogStore 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

Nome Description
LogStore(SafeFileHandle)

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

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

Inicializa uma nova instância da classe LogStore.

LogStore(String, FileMode, FileAccess, FileShare)

Inicializa uma nova instância da classe LogStore.

LogStore(String, FileMode, FileAccess)

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

LogStore(String, FileMode)

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

Propriedades

Nome Description
Archivable

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

BaseSequenceNumber

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

Extents

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

FreeBytes

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

Handle

Obtém o identificador de arquivo do sistema operacional para o arquivo de log encapsulado pela instância atual LogStore .

LastSequenceNumber

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

Length

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

Policy

Obtém a política associada a esse repositório de logs.

StreamCount

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

Métodos

Nome Description
CreateLogArchiveSnapshot()

Tira um instantâneo do estado do repositório de logs para fazer um backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Tira um instantâneo do estado do repositório de logs entre os números de sequência especificados para fazer um backup.

Delete(String)

Remove o repositório de logs.

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 Objectatual.

(Herdado de Object)
SetArchiveTail(SequenceNumber)

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a