> ## 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.

# Atributos de log

<Tip>
  Quer aproveitar ao máximo seus logs? Leia nosso [artigo do Learning Center
  sobre melhores práticas de
  logging](https://www.appsignal.com/learning-center/what-logs-should-i-store)
  para mais informações sobre como utilizar adequadamente os logs da sua
  aplicação.
</Tip>

Os melhores tipos de logs são descritivos, contextuais e concisos. Os atributos permitem que você armazene, consulte e filtre rapidamente informações contextuais importantes dos logs da sua aplicação.

Os atributos são suportados nos formatos de log [Logfmt][logfmt-docs], [JSON][json-docs] e [NDJSON][ndjson-docs].

<h2 id="formatting">
  Formatação
</h2>

O AppSignal fará o parsing dos logs recebidos da sua fonte com base em pares chave-valor, armazenando cada chave e valor como atributos na linha de log, permitindo que você filtre linhas de log por esses atributos.

Formatando atributos com:

* [Logfmt](#logfmt)
* [JSON e NDJSON](#json-and-ndjson)

<h3 id="logfmt">
  Logfmt
</h3>

Em Logfmt, atributos podem ser adicionados às linhas de log:

```text Text theme={null}
this is foo=bar a duration=10 message message="I am a message"
```

Por exemplo, a linha de log acima será parseada em uma linha de log com a mensagem `"I am a message"` e os seguintes atributos:

<CodeGroup>
  ```json JSON theme={null}
  { "foo": "bar", "duration": 10 }
  ```
</CodeGroup>

[Leia mais sobre formatação de logs Logfmt.](/logging/formatting/logfmt)

<h3 id="json-and-ndjson">
  JSON e NDJSON
</h3>

Em JSON, atributos podem ser adicionados em um hash sob a chave `attributes`:

```text Text theme={null}
{
  "timestamp": "2022-06-02T04:17:25.783Z",
  "group": "organisations",
  "severity": "warn",
  "message": "This is a test message",
  "hostname": "frontend1",
  "attributes": {
    "org": "appsignal",
    "step": 1,
    "seen_terms": true,
    "entries": 10.01
  }
}
```

Por exemplo, a linha de log acima será parseada em uma linha de log com a mensagem `"This is a test message"` e os seguintes atributos:

<CodeGroup>
  ```json JSON theme={null}
  { "org": "appsignal", "step": 1, "seen_terms": true, "entries": 10.01 }
  ```
</CodeGroup>

[Leia mais sobre formatação de logs JSON/NDJSON.](/logging/formatting/json)

<h2 id="querying-attributes-in-appsignal">
  Consultando atributos no AppSignal
</h2>

No AppSignal, você pode pesquisar logs que correspondam a condições específicas de atributos.

Por exemplo, a consulta a seguir retornaria todos os logs com um atributo `article_id` que contém o valor 7:

```text Text theme={null}
attributes.article_id=7
```

Leia nossa [documentação de gerenciamento de logs](/logging/query-syntax) para uma explicação completa da nossa sintaxe de busca de logging.

Quando um log é expandido, os atributos serão listados abaixo da mensagem de log:

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/logging/formatting/expanded-log-line.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=e6626beedd58d340de11271b643d79d9" alt="Linha de log expandida com tabela de atributos" width="2038" height="1286" data-path="assets/images/screenshots/logging/formatting/expanded-log-line.png" />

<h2 id="formatting-rules">
  Regras de formatação
</h2>

Os valores de atributos podem ser de qualquer um dos seguintes tipos:

* string
* integer (por exemplo, `10`)
* double (por exemplo, `10.01`)
* boolean (`true`/`false`)

As chaves de atributos devem seguir as seguintes regras:

* 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 não devem ter mais de 255 caracteres
* Não mais que 25 atributos por mensagem de log.

Caso as chaves e valores dos atributos não sigam as regras acima, o seguinte comportamento pode ser esperado:

* 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.

[json-docs]: /logging/formatting/json.html#json

[logfmt-docs]: /logging/formatting/logfmt.html

[ndjson-docs]: /logging/endpoints/http-json#ndjson


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.