Histórico da Página
...
1.1 O TRACKLOG REGISTRA VÁRIOS NÍVEIS (LEVEL) DE LOG
Ordem | Nível (Level) | Identificado no arquivo | Uso |
---|---|---|---|
0 | Verbose | [VRB] | Verbose é o nível mais ruidoso, raramente (ou nunca) habilitado para um aplicativo de produção. |
1 | Debug | [DBG] | Debug é usado para eventos internos do sistema que não são necessariamente observáveis de fora, mas são úteis para determinar como algo aconteceu. |
2 | Information | [INF] | Os eventos de informação descrevem coisas que acontecem no sistema que correspondem às suas responsabilidades e funções. Geralmente estas são as ações observáveis que o sistema pode realizar. |
3 | Warning | [WRN] | Quando o serviço está degradado, em perigo ou pode estar se comportando fora de seus parâmetros esperados, os eventos de nível de aviso são usados. |
4 | Error | [ERR] | Quando a funcionalidade não está disponível ou as expectativas são quebradas, um evento de Erro é usado. |
5 | Fatal | [FTL] | O nível mais crítico, os eventos fatais exigem atenção imediata. |
1.2 INFORMAÇÕES CONTIDAS NO ARQUIVO DE LOG
...
Bloco de código |
---|
"{SourceContext}{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Legacy} [{Level:u3}] {Message:lj} ({EnvironmentName}|{EnvironmentUserName}) <{ThreadId}:{ThreadName}>[{ProcessId}:{ProcessName}] [{CallerFilePath} - ({CallerLineNumber}) - {CallerMemberName}] [{Module}, {Category}, {Funcionality}] {NewLine}{Exception}" |
Propriedades do templete | Exemplo de dados logado | Descrição |
---|---|---|
{SourceContext} | RM.Lib.Monitoring.Tracklog.Test.LogUnitTest | Contexto onde o log se encontra. Geralmente o namespace da classe que está usando o TrackLog. |
{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} | 2022-08-30 17:44:44.870 -03:00 | Data e hora do evento. |
{Legacy} | [LGC] | Registros do sistema antigo de log são identificado com a tag [LGC] |
[{Level:u3}] | [INF] | Nível (level) do evento. |
{Tenant} | shared-environment | Identifica o Tenant do evento. Esse item é acoplado à mensagem. |
{Message:lj} | Information log test | Mensagem do evento. |
({EnvironmentName}|{EnvironmentUserName}) | (Production|BH01\carlos.almeida) | Nome do ambiente e do usuário. |
<{ThreadId}:{ThreadName}> | <13:Host> | ThreadId e ThreadName do evento. |
[{ProcessId}:{ProcessName}] | [36956:Host.exe] | ProcessId e ProcessName do evento. |
[{CallerFilePath} - ({CallerLineNumber}) - {CallerMemberName}] | [Lib\RM.Lib.Monitoring.Tracklog.TesteUnitario\LogUnitTest.cs - (114) - Should_Write_Info_Log] | Arquivo de onde foi registrado o evento de log com o número da linha e o método que o chamou. |
[{Module}, {Category}, {Funcionality}] | [RMLib, SmartClient, Configuracao] | Módulo, categoria e funcionalidade do sistema onde o evento ocorreu. |
{NewLine}{Exception} | NullReferenceException: Write Error Log Exception ---> System.Exception: Should_Write_Error_Log | Warning, Error e Fatal é registrado e uma nova linha com a exceção |
02. COMO CONFIGURAR
...
O TRACKLOG é configurado através do arquivo JSON appsettings.log.json, o qual deve ficar no diretório raiz do sistema RM. Caso o arquivo não seja encontrado, o sistema assume as configurações padrões.
...
A a sessão principal do arquivo de configuração é a "Serilog", onde é informado como o sistema deve escrever o arquivo de log e os recursos que serão utilizados:
Sessão principal Serilog
Sessão Principal | Subsesões | Pode ser alterado? | |
---|---|---|---|
Serilog | |||
Using | Não | Recursos usados pelo Serilog | |
Enrich | Não | Informações usadas para enriquecer os dados do log. | |
MinimumLevel | Sim | Nível mínimo que deve ser registrado. 0-Verbose, 1-Debug, 2 - Information, 3-Warning, 4-Error, 5-Fatal | |
Filter | Sim | Usa expressão para filtrar eventos que passam pelo pipeline Serilog - Opções de Name: ByExcluding ou ByIncludingOnly | |
WriteTo | Somente os argumentos na subseção Args da MapToFile | Define como e onde o log deve ser escrito e salvo. |
Sessão que configura a escrita no arquivo de log
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "MapToFile",
"Args": {
Propriedade | Descrição | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
enable | A propriedade "enable" tem como objetivo desabilitar o recurso de escrita de log em arquivo. Por padrão, o valor dessa propriedade é definido como "false", indicando que o recurso está desativado.
| ||||||||||||||
path | Caminho onde o arquivo de log vai ser salvo
Formato: Os diretórios devem ser separados por duas barras invertidas \\ ou uma barra normal / "path": "C:\\TOTVS\\RM\\Logs\\" ✔️ "path": "C:/TOTVS/RM/Logs/" ✔️ "path": "C:\TOTVS\RM\Logs\" ❌ | ||||||||||||||
restrictedToMinimumLevel | Somente mensagens de log deste nível ou acima deste nível serão enviadas para este coletor.
| ||||||||||||||
formatProvider | Fornece informações de formatação específicas da cultura ou null. Padrão: Null | ||||||||||||||
outputTemplate | Um modelo de mensagem descrevendo o formato usado para gravar no coletor.
| ||||||||||||||
fileSizeLimitBytes | O tamanho máximo aproximado, em bytes, para o qual um arquivo de log poderá crescer. Para crescimento irrestrito, passe null.
| ||||||||||||||
buffered | Indica se a liberação para o arquivo de saída pode ser armazenada em buffer ou não.
| ||||||||||||||
shared | Permitir que o arquivo de log seja compartilhado por vários processos.
| ||||||||||||||
flushToDiskInterval | Se fornecido, uma limpeza completa do disco será executada periodicamente no intervalo especificado. Exemplo: flushToDiskInterval: "2.00:00:00"
| ||||||||||||||
rollingInterval | O intervalo no qual o registro será transferido para um novo arquivo.
| ||||||||||||||
rollOnFileSizeLimit | Se True, um novo arquivo será criado quando o limite de tamanho do arquivo for atingido.
| ||||||||||||||
retainedFileCountLimit | O número máximo de arquivos de log que serão retidos, incluindo o arquivo de log atual. Para retenção ilimitada, passe null.
| ||||||||||||||
encoding | Codificação de caracteres usada para escrever o arquivo de texto. Opções: UTF8, UTF7, UTF32, Unicode, BigEndianUnicode, ASCII, Default
| ||||||||||||||
retainedFileTimeLimit | O tempo máximo após o término de um intervalo em que um arquivo de log contínuo será retido. Exemplo: retainedFileTimeLimit: "6.14:32:15"
|
Sessão que configura a escrita do log no console
"WriteTo": [
{
"Name": "Console",
"Args": {
Propriedade | Descrição |
---|---|
theme | Define um tema para ser usado ao escrever o log no console |
outputTemplate | Um modelo de mensagem descrevendo o formato usado para gravar no console. Padrão: {Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Legacy} [{Level:u3}] {Message:lj} {EnvironmentUserName} {EnvironmentName}- <{ThreadId}>{NewLine}{ExceptionDetails} |
Sessão que configura o envio do log para o sistema de monitoramento Seq
"WriteTo": [
{
"Name": "Seq",
"Args": {
Propriedade | Descrição |
---|---|
serverUrl | Define a url do servidor Seq. |
*O Seq é um servidor de pesquisa e análise em tempo real para dados de log de aplicativos estruturados.
...
2.4.5 Usando o recurso de Filter, para refinar o log.
Informações | ||||
---|---|---|---|---|
|
...
Informações | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
...