Como Escrever Registros

Índice:

Como Escrever Registros
Como Escrever Registros
Anonim

Hoje, a maioria dos aplicativos e aplicativos de sistema salvam periodicamente informações sobre o processo de seu trabalho, erros e falhas em logs especiais chamados logs. A maioria dos sistemas operacionais de uso geral fornece serviços que permitem gravar logs usando uma interface de programação padrão.

Como escrever registros
Como escrever registros

Necessário

  • - compilador C;
  • - SDK da plataforma Windows;
  • - Desenvolver pacote para glibc.

Instruções

Passo 1

Adicione suporte para gravar logs no log do sistema de seu aplicativo projetado para funcionar em sistemas operacionais da família Windows.

Use a função de API RegisterEventSource para registrar o aplicativo como uma fonte de evento, a função ReportEvent para adicionar uma entrada ao log e a função DeregisterEventSource para fechar o identificador retornado por RegisterEventSource.

Faz sentido chamar RegisterEventSource durante a inicialização do aplicativo e salvar o descritor retornado o tempo todo, para que as entradas no log possam ser colocadas de diferentes lugares no programa. O exemplo mais simples de gravação no registro do Windows pode ser assim:

HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");

if (hLog! = NULL)

{

if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Texto da mensagem / 0", NULL))

{

// evento foi registrado com sucesso

}

DeregisterEventSource (hLog);

}

Mais detalhes sobre a semântica da função ReportEvent podem ser encontrados no MSDN em https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Além disso, você precisa colocar alguns dados sobre o módulo executável do aplicativo no registro do sistema e adicionar recursos em um formato específico ao próprio módulo ou a uma biblioteca dinâmica de terceiros. Para obter mais informações sobre as chaves de registro do serviço de log de eventos, consulte

Passo 2

O log em sistemas operacionais compatíveis com Linux geralmente pode ser feito usando o daemon syslog. Esse serviço tem uma interface de nível de aplicativo na forma de um conjunto de funções, cujas declarações são colocadas no arquivo de cabeçalho syslog.h.

Use a função openlog para criar uma conexão com o serviço syslog de um aplicativo ou biblioteca. Chame as funções syslog ou vsyslog para colocar mensagens no log. Após o término dos eventos de gravação ou quando o aplicativo é encerrado, feche a conexão com o serviço chamando a função closelog. Além disso, você pode definir as configurações para ignorar chamadas que adicionam registros de eventos com uma prioridade específica usando a função setlogmask. Um exemplo de gravação de mensagens no registro pode ser assim:

openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);

syslog (LOG_NOTICE, "MyApplication é lançado com PID% d", getuid ());

syslog (LOG_INFO, "Mensagem de informação!");

closelog ();

Para obter mais informações sobre os parâmetros das funções da API syslog, consulte a documentação de informações do libc.

etapa 3

Grave logs em arquivos arbitrários usando sua própria implementação do subsistema de persistência de eventos. Uma das soluções mais simples para este problema é criar várias funções no escopo global, uma das quais abre um arquivo com um nome específico no modo de adição de informações, a segunda fecha e a terceira adiciona uma string de mensagem passada a ele como um parâmetro para este arquivo. Conceitualmente, essa solução se assemelha à interface de programação syslog do Linux.

Use as funções fopen e fclose da biblioteca padrão C para abrir e fechar um arquivo, respectivamente. Chame fwrite para adicionar informações ao arquivo. Você também pode usar funções específicas da plataforma (por exemplo, CreateFile no Windows) e métodos de objetos das estruturas usadas que encapsulam a funcionalidade de trabalhar com arquivos.

Recomendado: