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 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) |