Skip to content

Latest commit

 

History

History
311 lines (243 loc) · 11.5 KB

README-ptBR.md

File metadata and controls

311 lines (243 loc) · 11.5 KB

MultiLog4D


MultiLog4D

MultiLog4D é uma biblioteca projetada para facilitar e agilizar o envio de logs para Android, iOS, Windows, macOS e Linux. Com apenas uma linha de código é possível enviar uma mensagem que será vista e monitorada na plataforma correspondente, como adb logcat no Android ou
syslog no Linux, como exemplo.

🪄 Instalação

Basta baixar os fontes do GitHub, descompactar em uma pasta de sua preferência e no seu projeto apontar para essa pasta no Search Path do projeto ou se preferir pode utilizar o Boss (gerenciador de dependências do Delphi) para realizar a instalação:

boss install github.com/adrianosantostreina/MultiLog4D

📝 Uso

Existem diversas formas de utilizar o MultiLog4D, detalharemos todas a seguir, mas a que mais gosto é utilizar a classe TMultiLog4DUtil presente na unidade MultiLog4D.Util.pas. É uma classe Singleton que pode ser chamada de qualquer parte do seu projeto Delphi.

Declare a unidade na cláusula uses do seu formulário e chame a linha abaixo:

uses
   MultiLog4D.Util;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMultiLog4DUtil
    .Logger
      .Tag('MultiLog4D')
      .LogWriteInformation('Qualquer log aqui...')
end;

Uma observação importante é que o TAG precisa ser informada obrigatoriamente para Android e iOS, do contrário você não conseguirá filtrar os logs no Terminal do Windows em aplicativos Android e no Console do macOS para aplicativos iOS. O MultiLog4D não irá validar se o tag foi inserido ou não, então você precisa lembrar de chamar o método. Se você não indicar uma TAG, o MultiLog4D definirá a TAG padrão com o nome "MultiLog4D".

A TAG será utilizada para filtrar todas as mensagens da sua aplicação no Terminal quando o monitoramento for solicitado:

💡Como ver o log do Android?

Usando qualquer janela de Terminal no Windows, você precisa basicamente usar o adb com o comando logcat para visualizar os logs.

adb logcat <MyTAG>:D *:S

Substitua pelo tag inserido no MultiLog4D, por exemplo:

adb logcat MyAppAndroid:D *:S

✍️ Observação: Seu dispositivo Android deverá estar em Modo Desenvolvedor, com depuração USB ativada. E caso possua mais de um dispostivo conectado na porta USB, precisará do UUID do disposito o qual fará o monitoramento dos logs. Use o comando a seguir para visualizar os UUID.

adb devices

Esse comando mostrará todos os UUID's de todos os dispositivos conectados ao USB. Em seguida filtre o log usando o comando a seguir:

adb -s <UUID> logcat MyAppAndroid:D *:S

Substitua pelo UUID do seu dispositivo.

💡Como ver o log no iOS?

No iOS, monitorar os logs deve ser feito pelo aplicativo Console no macOS. Busque pelo aplicativo Console na busca do macOS. Ao abrir o aplicativo, o dispositivo iPhone/iPad que estiver usando para testar seu app aparecerá na barra lateral, apenas clique nele e pronto, os logs desse dispositivo aparecerão na janela.

⚠️ Atenção: para filtrar somente os logs do seu aplicativo, digite na busca, à direita superior, o nome da TAG que você definiu no Delphi e em seguida aperte ENTER. Um combobox aparecerá à esquerda da busca. Selecione a opção "Mensagem" no combobox. E se preferir, filtre também o processo. Digite o nome do processo na busca (O nome do projeto geralmente é o nome do seu DPR no Delphi), tecle ENTER e em seguida filtre por "Processo" no combobox.

MultiLog4D Console

💻 Windows

No Windows podemos enviar os logs para Console, Visualizador de Eventos e para arquivo. Para isso há um método a ser configurado, o Output. Ele possui as variações:

  • loFile: Para geração em arquivo
  • loEventViewer: Para geração em Visualizador de Eventos
  • loConsole: Para geração no Console
      TMultiLog4DUtil
        .Logger
        .Output([loConsole, loFile, loEventViewer])
        .LogWriteInformation('Inicializando...');

    Como pode ver, é um array de opções e você configura como desejar.

    🏆 Recursos Adicionais

    • Filename
      Você pode configurar a pasta e o nome do arquivo de log que será gerado, do contrário o MultiLog4D criará automaticamente um diretório log e um arquivo com nome padrão. Para configurar isso, basta chamar o método:
      TMultiLog4DUtil
        .Logger
        .FileName('C:\MeusLogs\ExemploDeLog')
        .LogWriteInformation('Inicializando...');

    A biblioteca acrescentará a data e a extensão do arquivo.

      ExemploDeLog_20241001_010720.log  

    ou seja, YYYYDDMM hhmmss.log

    • SetLogFormat
      Você pode formatar a saída do log:

    Default: ${time} ${username} ${eventid} [${log_type}] - ${message}

    Possible values: category

      TMultiLog4DUtil
        .Logger
        .SetLogFormat('${time} ${username} ${eventid} [${log_type}] - ${message}')
        .LogWriteInformation('Inicializando...');

    Estamos avaliando outras informações que poderão fazer parte do log. Caso você tenha sugestões, envie-as através das ISSUES.

    • SetDateTimeFormat
      Você pode personalizar o formato de DataHora.
      TMultiLog4DUtil
        .Logger
        .SetDateTimeFormat('YYYY-DD-MM hh:mm:ss')
        .LogWriteInformation('Inicializando...');
    • Category
      Você pode personalizar a categoria do log para melhor encontrar os erros e informações no seu projeto. As opções de categoria estão previstas na classe TEventCategory no arquivo MultiLog4D.Types.

    Os valores possíveis são:

  • ecNone
  • ecApplication
  • ecSecurity
  • ecPerformance
  • ecError
  • ecWarning
  • ecDebug
  • ecTransaction
  • ecNetwork

      TMultiLog4DUtil
        .Logger
        .Category(ecApplication)
        .LogWriteInformation('Inicializando...');
    • EventId
      Se você possuir uma classe própria de erros e mapeou usando uma numeração, é possível usar essa numeração para mostrar no log. Por exemplo:
  • 1000 = Sistema offline
  • 1001 = Sistema online
  • 1010 = Erro de conexão

    Caso essa seja sua forma própria de indentificar possíveis erros, use esse número no log.

      TMultiLog4DUtil
        .Logger
        .EventId(1000)
        .LogWriteInformation('Inicializando...');

    💻 Linux

    No Linux os logs são enviados para a saída padrão do sistema operacional, ou seja, para o syslog. Não é possível enviar logs para arquivos, portanto basta fazer o monitoramento do log usando a linha de comando abaixo no terminal do Linux:

      tail -f /var/log/syslog  

    No Linux você ainda pode configurar o EventId mencionado na seção anterior.

    💻 macOS

    Aplicações para macOS também podem ser monitoradas e receber logs diretamente do Delphi. A forma de monitoramento acontece exatamente como no iOS, através do Console. Retorne na seção sobre iOS para entender como visualizar os logs. A única diferença é que você verá o nome do seu dispositivo mac na barra lateral do macOS.

    Assim como no Linux, não é possível criar logs em arquivo. Caso você veja a necessidade de enviar o log também para arquivo, envie sua sugestão através das ISSUES.

    EnableLog

    Você tem a opção de desativar ou ativar o log a qualquer momento, basta usar a propriedade EnableLog conforme mostrado abaixo:

      TMultiLog4DUtil
        .EnableLog(False);

    ✍️ Observação: O default dessa propriedade é True.


    Variações do LogWrite

    A biblioteca possui ao todo 05 (Cinco) métodos de Log, são eles:

  • LogWrite

    Nesse método você precisa definir no segundo parâmetro qual tipo de log deseja enviar, ou seja: Information, Warning, Error ou Fatal Error.

      TMultiLog4DUtil
        .LogWrite('Mensagem', lgInformation);

    Em seguida você terá os métodos:

  • LogWriteInformation
  • LogWriteWarning
  • LogWriteError
  • LogWriteFatalError

    Nesses não é necessário informar o tipo de log pois já será direcionado internamente para a biblioteca.

    ✍️ Observação: Você pode também encadear várias mensagens em uma única chamada.

      TMultiLog4DUtil
        .LogWriteInformation('Inicializando o sistema')
        .LogWriteInformation('Conectando ao servidor')
        .LogWriteWarning('Validação de status de usuário');

    ✍️ Exemplo de uso em uma Exceção:

    procedure TForm1.Button1Click(Sender: TObject)
    begin
      try
       //seu código 
      except on E:Exception do
        begin
          TMultiLog4DUtil
            .LogWriteError(Format('Erro: %s | %s', [E.ClassName, E.Message]));
        end;
      end;
    end;    

    ⭕ Horse

    Caso esteja procurando incluir logs em API's desenvolvidas em Horse, saiba que isso também é possível, tanto para Windows quanto para Linux. O processo é o mesmo, basta adicionar a biblioteca baixando-a ou instalando através do boss que vai funcionar exatamente como explicado até aqui.

    🤔 Lembrando apenas que no Windows podemos adicionar logs no Console, EventViewer e em Arquivos. Veja um exemplo de código:

    uses
      Horse,
      MultiLog4D.Common,
      MultiLog4D.Util,
      MultiLog4D.Types,
      System.IOUtils,
      System.SysUtils;
    
    begin
      TMultiLog4DUtil
        .Logger
        .LogWriteInformation('Start Application');
    
      THorse
        .Get('/test1',
        procedure(Req: THorseRequest; Res: THorseResponse)
        begin
          Randomize;
    
          TMultiLog4DUtil
            .Logger
            .LogWriteInformation('Before Test1 - ' + Format('Mensagem de teste 1 de log: %d', [Random(1000)]));
    
          Res.Send('test1');
    
          TMultiLog4DUtil
            .Logger
            .LogWriteInformation('After Test1 - ' + Format('Mensagem de teste 1 de log: %d', [Random(1000)]));
        end
        );
    
      THorse
        .Listen(9000);
    end.


    Apresentação Watch the video

    Linguagens da Documentação

    English (en)
    Português (ptBR)

    ⚠️ Licença

    MultiLog4D é uma biblioteca gratuita e de código aberto licenciada sob a MIT License.