Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


Propriedade da sessão:


CONTEÚDO

  1. Visão Geral
  2. Como configurar

...

Tracklog é configurado através de um arquivo json: appsettings.log.json que deve ficar dentro da pasta Bin do sistema, caso o arquivo não seja encontrado o sistema assume as configurações padrões
O conteúdo do arquivo de configuração é divido em algumas sessões.

2.1 SESSÕES DO ARQUIVO DE CONFIGURAÇÃO

A principal é a sessão é a "Serilog", onde é informado como e sistema deve escrever o arquivo de log e os recursos que serão utilizados

   Serilog

Sessão


Principal

Subsesões 

Pode ser

alterado?
Serilog


UsingNãoRecursos usados pelo Serilog 
EnrichNãoInformações usadas para enriquecer os dados do log.
MinimumLevelSimNível mínimo que deve ser registrado.
0-Verbose, 1-Debug, 2 - Information, 3-Warning, 4-Error, 5-Fatal
FilterSimUsa expressão para filtrar eventos que passam pelo pipeline Serilog - Opções de Name: ByExcluding ou ByIncludingOnly
WriteToSomente os argumentos na subseção Args da MapToFileDefine como e onde o log deve ser escrito e salvo.


WriteTo :
        Name: Async
        Args: Configure
                 Name: MapToFile
                 Args:

PropriedadeDescrição
pathCaminho onde o arquivo de log vai ser salvo
Padrão: Bin\Logs
restrictedToMinimumLevelSomente mensagens de log deste nível acima são enviadas para este coletor.
Padrão: Verbose
formatProviderFornece informações de formatação específicas da cultura ou null.
outputTemplateUm modelo de mensagem descrevendo o formato usado para gravar no coletor. 
O padrão é "{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}".
fileSizeLimitBytesO tamanho máximo aproximado, em bytes, para o qual um arquivo de log poderá crescer.
Para crescimento irrestrito, passe null.
O padrão é 1 GB. Para evitar escrever eventos parciais, o último evento dentro do limite
será escrito na íntegra mesmo que exceda o limite.
bufferedIndica se a liberação para o arquivo de saída pode ser armazenada em buffer ou não.
O padrão é false.
sharedPermitir que o arquivo de log seja compartilhado por vários processos.
O padrão é false.
flushToDiskInterval

Se fornecido, uma limpeza completa do disco será executada periodicamente no intervalo especificado.
Deve ser maior ou igual a 0.
Formato: d.hh:mm:ss
d : numero de dias.
hh: numero de horas.
mm: numero de minuto.
ss: numero de segundos.

Exemplo: 

flushToDiskInterval: "2.00:00:00"
A limpeza completa do disco será executada a cada dois dias.

rollingInterval

O intervalo no qual o registro será transferido para um novo arquivo.

RollingInterval
InfiniteO arquivo de log nunca rolará; nenhuma informação de período de tempo será anexada ao nome do arquivo de log.
YearRole todos os anos. Os nomes dos arquivos terão um ano de quatro dígitos anexado no padrão yyyy.
MonthRole a cada mês do calendário. Os nomes dos arquivos terão yyyyMM anexado.
DayRole todos os dias. Os nomes dos arquivos terão yyyyMMdd anexado.
HourRole a cada hora. Os nomes dos arquivos terão yyyyMMddHH anexado.
MinuteRole a cada minuto. Os nomes dos arquivos terão yyyyMMddHHmm anexado.
rollOnFileSizeLimitSe True, um novo arquivo será criado quando o limite de tamanho do arquivo for atingido.
Nomes de arquivo  terá um número anexado no formato _NNN, com o primeiro nome de arquivo sem número.
retainedFileCountLimitO número máximo de arquivos de log que serão retidos,
incluindo o arquivo de log atual. Para retenção ilimitada, passe null.
O padrão é 31.
encodingCodificação de caracteres usada para escrever o arquivo de texto.
O padrão é UTF8
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.
Deve ser maior ou igual a 0.
Ignorado se rollingInterval for Infinite.
Formato: d.hh:mm:ss
d : numero de dias.
hh: numero de horas.
mm: numero de minuto.
ss: numero de segundos.

Exemplo: 

retainedFileTimeLimit: "6.14:32:15"
O arquivo será retido depois de 6 dias 14 horas e 32 minutos e 15 segundos.
Caso o valor informado esteja em um formato invalido esse parâmetro será ignorado pelo sistema.


WriteTo :
        Name:Console 
        Args:

PropriedadeDescrição
themeDefine um tema para ser usado ao escrever o log no console
outputTemplateUm 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}


WriteTo :
         Name: Seq 
          Args:

PropriedadeDescrição
serverUrlDefine a url do servidor Seq.

*O Seq é um servidor de pesquisa e análise em tempo real para dados de log de aplicativos estruturados.

appsettings.log.json


Bloco de código
languagejs
themeRDark
linenumberstrue
{
  "Serilog": {
    "Using": ["Serilog", "Serilog.Enrichers.Environment", "Serilog.Enrichers.Process", "Serilog.Settings.Configuration", "Serilog.Sinks.Seq", "Serilog.Expressions", "RM.Lib.Monitoring.Tracklog"],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId", "WithEnvironmentUserName", "WithEnvironmentName"],
    "MinimumLevel": "Verbose",
	/*"Filter": [
      {
        "Name": "ByExcluding",
        "Args": {
          "expression": "Tenant = 'APP1'"
        }
      }
    ],*/
    "WriteTo": [
      {
        "Name": "Seq",
        "Args": { 
					"serverUrl": "http://localhost:5341" 
				}
      },
	  {
		  "Name": "Console",
		  "Args": {
			"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
			"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Legacy} [{Level:u3}] {Message:lj} {EnvironmentUserName} {EnvironmentName}- <{ThreadId}>{NewLine}{ExceptionDetails}"
		  }
	  },
      {
        "Name": "Async",
        "Args": {
          "configure": [
            {
              "Name": "MapToFile",
              "Args": {
                "rollOnFileSizeLimit": true,
                "fileSizeLimitBytes": 100000000000,
                "retainedFileCountLimit": 31,
				"outputTemplate":"{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}"
              }
            }
          ]
        }
      }
    ]
  }
}

...