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 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 da 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 ler e gravar 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 de acesso passado, 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 registro 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 o e Remove os Add LogExtentCollection métodos do 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 sob 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
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) |