> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Formatação de logs Logfmt

<Warning>
  🔐 Não envie <strong>Informações Pessoais Identificáveis (PII)</strong> para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) dos logs e use um ID, hash ou identificador pseudonimizado no lugar. <br /> <br /> Para **entidades cobertas pela HIPAA**, mais informações sobre como assinar um Business Associate Agreement (BAA) podem ser encontradas em nossa [documentação de Business Add-Ons](/support/business-add-ons).
</Warning>

Logfmt é um formato de log fácil para humanos lerem e escreverem, e tem suporte do AppSignal. Inicialmente foi usado como formato para os [Heroku Logdrains](/logging/platforms/heroku), e agora é usado por muitos outros provedores de logging.

A maioria das nossas plataformas e endpoints suporta o formato de mensagem Logfmt, que vamos descrever em mais detalhes abaixo.

## Formato

Logfmt é um formato chave-valor, onde cada par chave-valor é separado por um espaço. A chave e o valor são separados por um sinal de igual (`=`). Os pares chave-valor são anexados à mensagem no final da linha de log.

Quaisquer pares chave-valor que não sigam o formato Logfmt são anexados à mensagem da linha de log.

### Exemplos

Os exemplos a seguir mostram como o AppSignal faz o parsing de logs no formato Logfmt:

#### Mensagem com atributos

<CodeGroup>
  ```shell Shell theme={null}
  this is foo=bar duration=10 a value="with spaces" message
  ```
</CodeGroup>

Isto será parseado em uma linha de log com a mensagem `"this is a message"` e os seguintes atributos: `{ "foo": "bar", "duration": 10, "value": "with spaces"}`

#### Mensagem com sobrescrita

<CodeGroup>
  ```shell Shell theme={null}
  this is foo=bar a duration=10 message message="I am a message"
  ```
</CodeGroup>

Isto será parseado em uma linha de log com a mensagem `"I am a message"` e os seguintes atributos: `{ "foo": "bar", "duration": 10 }`.

O restante da mensagem original é ignorado em favor da chave `message`.

#### Apenas atributos

<CodeGroup>
  ```shell Shell theme={null}
  foo=bar duration=100
  ```
</CodeGroup>

Isto será parseado em uma linha de log com a mensagem `"foo=bar duration=100"` e os seguintes atributos: `{ "foo": "bar", "duration": 100 }`

## Regras de formatação

* As chaves devem ser alfanuméricas.
* As chaves não podem conter espaços, mas podem conter pontos finais (`.`), sublinhados (`_`) e hifens (`-`).
* As chaves não podem conter mais de 50 caracteres
* Os valores devem começar com um caractere alfanumérico e não podem ter mais de 100 caracteres
* Não mais que 25 atributos por mensagem de log.

Pares chave-valor que não seguem essas regras são anexados à mensagem de um log.

**Comportamento das chaves:**

* Se uma chave não tiver um valor, ela será anexada ao campo da mensagem.
* Se um par chave-valor tiver uma chave com o nome `msg` ou `message`, o valor dessa chave será parseado como a mensagem de log.
* Se nenhuma chave message/msg estiver disponível, a linha de log inteira será considerada a mensagem.
