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

# Syntaxe de requête des logs

<Tip>
  Cette page décrit notre syntaxe de requête la plus récente. Pour la syntaxe
  utilisant `attributes`, consultez notre [ancienne syntaxe de requête](/logging/legacy-query-syntax).
</Tip>

Le système de filtrage des logs d'AppSignal vous permet de rechercher et de filtrer les logs de votre application à l'aide d'une syntaxe de requête intuitive. Que vous deviez trouver des messages d'erreur spécifiques, filtrer par niveau de gravité ou effectuer des recherches dans des attributs personnalisés, notre langage de requête vous permet de cibler facilement exactement ce que vous cherchez.

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/logging/all-logs.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=342b1ad76ab196324dfd3e3d924f932c" alt="Capture d'écran d'un log développé" width="1188" height="692" data-path="assets/images/screenshots/logging/all-logs.png" />

## Démarrage rapide

Commencez avec ces requêtes simples :

<CodeGroup>
  ```sql SQL theme={null}
  timeout
  ```
</CodeGroup>

Recherche « timeout » dans le champ message.

<CodeGroup>
  ```sql SQL theme={null}
  severity=error
  ```
</CodeGroup>

Trouve tous les logs de niveau erreur.

<CodeGroup>
  ```sql SQL theme={null}
  severity=error hostname=production-web-1
  ```
</CodeGroup>

Trouve les erreurs d'un serveur spécifique.

## Champs disponibles

Vous pouvez interroger les champs suivants dans vos logs :

| Champ                   | Description                                        | Exemple                   |
| ----------------------- | -------------------------------------------------- | ------------------------- |
| `severity`              | Niveau de log (error, warning, info, debug, trace) | `severity=error`          |
| `hostname`              | Hôte de l'application                              | `hostname=production-1`   |
| `group`                 | Espace de noms défini pour votre application       | `group="background jobs"` |
| `message`               | Contenu du message de log                          | `message:timeout`         |
| Attributs personnalisés | Tout attribut personnalisé défini dans vos logs    | `duration>10.1`           |

Si aucun champ n'est fourni, la requête effectuera une recherche dans le champ message.

## Opérateurs de requête

### Opérateurs de recherche

| Opérateur | Syntaxe        | Description               | Exemple           |
| --------- | -------------- | ------------------------- | ----------------- |
| `:`       | `field:value`  | Contient la valeur        | `message:error`   |
| `!:`      | `field!:value` | Ne contient pas la valeur | `hostname!:test`  |
| `=`       | `field=value`  | Correspondance exacte     | `severity=error`  |
| `!=`      | `field!=value` | Différent de              | `source!=mongodb` |

Utilisez des guillemets pour les valeurs contenant des espaces : `group:"background jobs"`

### Opérateurs de comparaison

Pour les valeurs numériques :

| Opérateur | Syntaxe            | Description         | Exemple         |
| --------- | ------------------ | ------------------- | --------------- |
| `>`       | `attribute>value`  | Supérieur à         | `duration>100`  |
| `<`       | `attribute<value`  | Inférieur à         | `user_id<1000`  |
| `>=`      | `attribute>=value` | Supérieur ou égal à | `duration>=100` |
| `<=`      | `attribute<=value` | Inférieur ou égal à | `user_id<=1000` |

### Attributs imbriqués

Nous utiliserons la structure JSON d'exemple suivante :

<CodeGroup>
  ```json JSON theme={null}
  {
    "message": "User logged in",
    "group": "admin",
    "hostname": "production-1",
    "user": {
      "id": 123,
      "name": "John Doe",
      "emails": ["john@example.com", "john@work.com"],
      "location.country": "US"
    }
  }
  ```
</CodeGroup>

Interrogez les attributs JSON imbriqués à l'aide de la notation par points :

<CodeGroup>
  ```sql SQL theme={null}
  user.id=123
  ```
</CodeGroup>

Accède aux propriétés d'objets imbriqués.

<CodeGroup>
  ```sql SQL theme={null}
  user.emails.0=john@example.com
  ```
</CodeGroup>

Interroge les éléments d'un tableau par index (à partir de zéro).

<CodeGroup>
  ```sql SQL theme={null}
  user.location\.country=US
  ```
</CodeGroup>

Échappez les points qui font partie du nom de champ lui-même à l'aide d'un backslash.

## Combiner des requêtes

### Logique AND (par défaut)

Les requêtes séparées par des espaces sont combinées avec AND :

<CodeGroup>
  ```sql SQL theme={null}
  severity=error hostname=production-1
  ```
</CodeGroup>

Trouve les erreurs de production-1.

### Logique OR

Utilisez `OR` pour faire correspondre n'importe quelle condition :

<CodeGroup>
  ```sql SQL theme={null}
  severity=error OR severity=warning
  ```
</CodeGroup>

Trouve les erreurs ou les avertissements.

### Regroupement avec des parenthèses

Utilisez des parenthèses pour les requêtes complexes :

<CodeGroup>
  ```sql SQL theme={null}
  severity=error AND (hostname=web-1 OR hostname=web-2)
  ```
</CodeGroup>

Trouve les erreurs provenant de web-1 ou de web-2.
