FileLoggingSession 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 o destino de mensagens registradas de instâncias do LoggingChannel .
public ref class FileLoggingSession sealed : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class FileLoggingSession final : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class FileLoggingSession final : IFileLoggingSession, IClosable
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
function FileLoggingSession(name)
Public NotInheritable Class FileLoggingSession
Implements IDisposable, IFileLoggingSession
- Herança
- Atributos
- Implementações
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Comentários
Use a classe FileLoggingSession para registrar mensagens e dados em um arquivo continuamente à medida que o aplicativo é executado. Você pode exibir os arquivos de log usando o WPT (Windows Performance Toolkit) e outros utilitários, como tracerpt.exe.
Adicione instâncias do LoggingChannel a um FileLoggingSession e chame métodos de instância FileLoggingSession para remover canais, descartar e executar outras operações. No momento, o número de canais não é limitado.
Observação
Em Windows Server 2012 R2 e Windows 8.1, cada aplicativo é limitado a 4 canais ativos e os canais devem ter nomes exclusivos.
A classe FileLoggingSession envia mensagens registradas para arquivos de disco quando um buffer é preenchido ou quando o usuário chama CloseAndSaveToFileAsync. A classe FileLoggingSession usa registro em log sequencial, o que significa que todas as mensagens são enviadas para um arquivo de disco e um histórico sequencial de mensagens é retido. Isso é diferente da classe LoggingSession , que envia mensagens registradas para o disco sob demanda, ou seja, quando o aplicativo detecta um problema e salva as mensagens na memória para análise.
Use a classe FileLoggingSession quando souber que todas as mensagens precisam ser salvas, geralmente por um longo período de tempo e quando o aplicativo não pode ser sobrecarregado com as etapas de salvamento sob demanda. Assim como a classe LoggingSession , as instâncias do LoggingChannel são adicionadas a uma instância fileloggingSession e a instância FileLoggingSession tem métodos para remover canais e descartar. As instâncias fileLoggingSession são inicializadas com um delegado para um novo retorno de chamada de arquivo, o que notifica o aplicativo quando ocorreu uma substituição de arquivo de log. O recurso invoca o delegado quando o arquivo de log interno atual atinge a capacidade e um novo arquivo está sendo criado para registro em log sequencial contínuo. O retorno de chamada delegado também pode ser chamado em limites de suspensão ou quando FileLoggingSession é descartado.
Quando o evento LogFileGenerated é invocado, o aplicativo recebe um StorageFile que representa o arquivo de log agora fechado. O aplicativo pode encaminhar o arquivo de log para processamento de maneira definida pelo aplicativo. Depois disso, a sessão continua fazendo logon em um arquivo de log atual recém-criado e agora aberto. Quando esse arquivo de log atinge a capacidade, o delegado de retorno de chamada é invocado novamente para o novo arquivo e o processo se repete.
Quando terminar de registrar eventos em log, chame CloseAndSaveToFileAsync para obter o último arquivo de log, pois o último arquivo de log ainda poderá estar aberto se ainda não tiver atingido a capacidade. Você também pode usar CloseAndSaveToFileAsync para fechar a sessão e obter acesso ao último arquivo de log. Observe que, se o último arquivo de log estiver vazio ou se todos os arquivos de log já tiverem sido relatados pelo método LogFileGenerated , o método CloseAndSaveToFileAsync retornará nulo.
Os arquivos de log são criados na pasta ApplicationData\Logs .
O nome de cada arquivo de log é baseado no nome da sessão mais um índice. O índice é redefinido sempre que uma nova sessão é criada. Sempre que um arquivo de log atinge o tamanho máximo, ele é fechado, o índice é incrementado e um novo arquivo de log é aberto usando o novo índice. (Como consequência, cada vez que você reiniciar um aplicativo, ele começará a substituir os arquivos de log gerados pela instância anterior do aplicativo.)
Você pode adicionar um manipulador para o evento LogFileGenerated para que seu aplicativo seja notificado sempre que um arquivo de log for fechado.
Se você não usar o evento LogFileGenerated ou o método CloseAndSaveToFileAsync , o FileLoggingSession não excluirá arquivos de log obsoletos (embora uma nova sessão possa substituir arquivos gerados por uma sessão anterior). Seu aplicativo é responsável por localizar e limpar os arquivos de log conforme necessário.
Antes que um arquivo de log seja fornecido a um aplicativo por meio do evento LogFileGenerated ou do método CloseAndSaveToFileAsync , ele é renomeado para um nome de arquivo de log especial. O mesmo nome de arquivo de log sempre é usado, portanto, novos logs substituirão os logs mais antigos. Dessa forma, os métodos LogFileGenerated e CloseAndSaveToFileAsync ajudam a impedir que arquivos de log obsoletos desperdiçam espaço na pasta ApplicationData.
FileLoggingSession fechará o arquivo de log atual e iniciará um novo arquivo de log quando o arquivo de log atual atingir 256 KB.
Construtores
FileLoggingSession(String) |
Inicializa uma nova instância da classe FileLoggingSession . |
Propriedades
Name |
Obtém o nome da sessão de registro em log. |
Métodos
AddLoggingChannel(ILoggingChannel) |
Adiciona um canal de registro em log à sessão de log atual. |
AddLoggingChannel(ILoggingChannel, LoggingLevel) |
Adiciona um canal de registro em log à sessão de log atual. O canal de registro em log aceita apenas eventos que têm um nível de registro em log no nível de log especificado ou acima do nível de log especificado. |
Close() |
Encerra a sessão de log atual. |
CloseAndSaveToFileAsync() |
Encerra a sessão de log atual e a salva em um arquivo. |
Dispose() |
Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados. |
RemoveLoggingChannel(ILoggingChannel) |
Remove o canal de log especificado da sessão de log atual. |
Eventos
LogFileGenerated |
Gerado quando um arquivo de log é salvo. |