LogStore Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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) |