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

# Ajouter des tags à une requête

export const Compatibility = ({versions = [], label = "Available in"}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const defaultPillStyle = {
    borderColor: "#d4d4d8",
    background: "#f4f4f5",
    color: "#3f3f46"
  };
  const pillStyles = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#d8b4fe",
      color: "#6b21a8"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde047",
      color: "#854d0e"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#5eead4",
      color: "#115e59"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde047",
      color: "#854d0e"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#86efac",
      color: "#166534"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#93c5fd",
      color: "#1e40af"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fca5a5",
      color: "#991b1b"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fdba74",
      color: "#9a3412"
    }
  };
  const getPillStyle = name => ({
    ...defaultPillStyle,
    ...pillStyles[name] || ({})
  });
  return <div className="not-prose my-4 rounded-lg border border-zinc-200 bg-zinc-50 px-4 py-3 text-sm dark:border-white/10 dark:bg-white/5">
      <div className="flex flex-wrap items-center gap-x-2 gap-y-1">
        <span className="font-semibold text-zinc-700 dark:text-zinc-200">
          {label}:
        </span>
        {versions.map((v, i) => <span key={`${v.name}-${v.version}-${i}`} className="inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium" style={getPillStyle(v.name)}>
            <span>{v.name}</span>
            <span className="opacity-70">
              {v.version}
              {v.exact ? "" : "+"}
            </span>
          </span>)}
      </div>
    </div>;
};

Vous pouvez utiliser le tagging pour fournir un contexte supplémentaire sur les erreurs et les incidents de performance. Le tagging peut aider à ajouter des informations qui ne font pas déjà partie d'une requête, telles que les données de session, les en-têtes, les données d'environnement ou les paramètres. Les tags peuvent également être utilisés pour filtrer les échantillons dans un incident afin de trouver toutes les erreurs pour un utilisateur spécifique ou les pages lentes pour une locale particulière.

Vous pouvez définir des tags partout où la transaction ou le span actuel est accessible. Nous recommandons de l'appeler avant l'exécution du code de votre application dans une requête, comme dans un callback. Vous pouvez voir quels tags s'appliquent à un échantillon sur la page d'incident [Error and Performance](https://appsignal.com/redirect-to/app?to=performance).

À l'aide de [Link Templates](/application/link-templates), il est possible d'ajouter des liens vers votre application avec des données de tag, telles que le panneau d'administration pour l'utilisateur connecté. Vous pouvez voir cela en pratique dans la capture d'écran ci-dessous, avec les tags `Link 1` et `Link 2`.

<img src="https://mintcdn.com/appsignal-715f5a51/MS9b5WO71lSfD5jG/assets/images/screenshots/tags/tags.png?fit=max&auto=format&n=MS9b5WO71lSfD5jG&q=85&s=01142180faf7fb0a63eb54549eb76f50" alt="Tag a request" width="718" height="379" data-path="assets/images/screenshots/tags/tags.png" />

<Warning>
  🔐 N'envoyez pas d'<strong>informations personnelles identifiables (PII)</strong> à AppSignal. Filtrez les PII (par exemple, noms, e-mails) et utilisez un identifiant, un hash ou un identifiant pseudonymisé à la place. <br /> <br /> Utilisez les [Link Templates](https://docs.appsignal.com/application/link-templates) pour les relier dans votre application.
</Warning>

## Ruby

Avec le gem [AppSignal for Ruby](/ruby), utilisez les méthodes d'assistance `Appsignal.add_tags` pour ajouter des tags aux échantillons d'erreur et de performance. Sur la version 3 et antérieure du gem Ruby, utilisez l'assistant `Appsignal.set_tags`.

Vous pouvez utiliser `Appsignal.add_tags` partout où une transaction active est accessible, nous recommandons de l'appeler avant l'exécution du code de votre application dans la requête, comme dans un `before_action` avec Rails.

<CodeGroup>
  ```ruby Ruby theme={null}
  before_action do
    Appsignal.add_tags(
      :user_id => current_user.id,
      :stripe_customer_id => stripe_customer_id,
      :locale => I18n.locale,
      :default_locale => I18n.default_locale
    )
  end
  ```
</CodeGroup>

### Tags par défaut

<Compatibility versions={[{ name: "AppSignal for Ruby", version: "4.8.3" }]} />

Vous pouvez configurer des tags qui seront ajoutés à toutes les transactions en utilisant l'[option de configuration `default_tags`](/ruby/configuration/options#option-default_tags). Ces tags sont appliqués automatiquement à chaque transaction. Les tags spécifiques à une transaction définis avec `Appsignal.add_tags` remplaceront les tags par défaut ayant la même clé.

<CodeGroup>
  ```ruby Ruby theme={null}
  Appsignal.configure do |config|
    config.default_tags = {
      "region" => "europe",
      "shard" => "shard-1"
    }
  end
  ```

  ```yaml YAML theme={null}
  default: &defaults
    default_tags:
      region: europe
      shard: shard-1
  ```

  ```bash Shell theme={null}
  export APPSIGNAL_DEFAULT_TAGS="region=europe,shard=shard-1"
  ```
</CodeGroup>

### Limitations {/* id: ruby-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une String ou un Symbol.
* La valeur taguée doit être une String, un Symbol, un Integer ou un Boolean (true/false).
  * Les valeurs booléennes sont prises en charge dans le gem Ruby 3.11 et versions ultérieures.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs de hash imbriquées ne sont pas prises en charge pour les tags, veuillez utiliser des [données personnalisées](/guides/custom-data/custom-data) à la place.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Unsupported: hash value type is not supported
  Appsignal.add_tags(
    :i18n => {
      :locale => I18n.locale,
      :default_locale => I18n.default_locale
    }
  )
  ```
</CodeGroup>

## Elixir

Utilisez la fonction [`Appsignal.Span.set_sample_data`](https://hexdocs.pm/appsignal/Appsignal.Span.html#set_sample_data/2) pour fournir un contexte supplémentaire sur les échantillons d'erreur et de performance. Utilisez la clé d'échantillon `"tags"` pour la fonction afin d'ajouter des tags au span.

<CodeGroup>
  ```elixir Elixir theme={null}
  Appsignal.Span.set_sample_data(
    Appsignal.Tracer.root_span,
    "tags",
    %{
      locale: "en",
      user_id: user_id,
      stripe_customer_id: stripe_customer_id,
      locale: locale,
      default_locale: default_locale
    }
  )
  ```
</CodeGroup>

### Le dernier appel prévaut

L'assistant `set_sample_data` peut être appelé plusieurs fois, mais seule la dernière valeur sera conservée. Lorsque le code ci-dessous est exécuté :

<CodeGroup>
  ```elixir Elixir theme={null}
  Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{locale: "en"})
  Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{user: "bob"})
  Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{locale: "de"})
  ```
</CodeGroup>

Cela aboutira au stockage des tags suivants :

<CodeGroup>
  ```elixir Elixir theme={null}
  %{
    locale: "de"
  }
  ```
</CodeGroup>

### Définir des données d'échantillon sur un span

Pour ajouter des données d'échantillon à un span dès sa création, ajoutez un `custom_on_create_fun` :

<CodeGroup>
  ```elixir Elixir theme={null}
  defmodule MyApp.Appsignal do
    def custom_on_create_fun(_span) do
      Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{"locale": "en"})
    end
  end
  ```
</CodeGroup>

Ensuite, ajoutez-le à la configuration de votre application :

<CodeGroup>
  ```elixir Elixir theme={null}
  # config/config.exs
  config :appsignal, custom_on_create_fun: &MyApp.Appsignal.custom_on_create_fun/1
  ```
</CodeGroup>

La fonction `custom_on_create_fun` nécessite AppSignal for Elixir version 2.8.3 ou supérieure.

### Limitations {/* id: elixir-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une `String` ou un `Atom`.
* La valeur taguée doit être une `String`, un `Atom` ou un `Integer`.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs de map imbriquées ne sont pas prises en charge pour les tags, veuillez utiliser des [données personnalisées](/guides/custom-data/custom-data) à la place.

<CodeGroup>
  ```elixir Elixir theme={null}
  # Unsupported: map value type is not supported
  Appsignal.Span.set_sample_data(
    Appsignal.Tracer.root_span,
    "tags",
    %{
      i18n: %{
        locale: "en_GB",
        default_locale: "en_US"
      }
    }
  )
  ```
</CodeGroup>

## Node.js

Importez la fonction d'assistance `setTag` pour ajouter des tags aux spans pour les échantillons d'erreur et de performance.

<CodeGroup>
  ```javascript Node.js theme={null}
  import { setTag } from "@appsignal/nodejs";

  setTag("user_id", user_id);
  setTag("stripe_customer_id", stripe_customer_id);
  setTag("locale", locale);
  setTag("default_locale", default_locale);
  ```
</CodeGroup>

### Limitations {/* id: nodejs-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une `String`.
* La valeur taguée doit être une `String`, un `Number` ou un `Boolean`.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs d'objet imbriquées ne sont pas prises en charge pour les tags, veuillez utiliser la fonction d'assistance [`setCustomData`](/guides/custom-data/custom-data) à la place.

<CodeGroup>
  ```javascript Node.js theme={null}
  const tracer = appsignal.tracer();
  const span = tracer.currentSpan();

  # Unsupported: object value type is not supported
  span.set("i18n", { locale: "en_GB", default_locale: "en_US" });
  ```
</CodeGroup>

## Python

Importez la méthode d'assistance `set_tag` pour ajouter des tags aux spans pour les échantillons d'erreur et de performance.

<CodeGroup>
  ```python Python theme={null}
  from appsignal import set_tag

  set_tag("user_id", user_id)
  set_tag("stripe_customer_id", stripe_customer_id)
  set_tag("locale", locale)
  set_tag("default_locale", default_locale)
  ```
</CodeGroup>

### Limitations {/* id: python-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une String.
* La valeur taguée doit être une String, un Integer, un Float ou un Boolean.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs d'objet imbriquées ne sont pas prises en charge pour les tags, veuillez utiliser la fonction d'assistance [`set_custom_data`](/guides/custom-data/custom-data) à la place.

## Go

Dans une application Go, pour ajouter un tag AppSignal à un span sur une trace, récupérez d'abord le span actif ou créez un nouveau span comme décrit sur [notre page d'instrumentation personnalisée Go](/go/custom-instrumentation).

Ensuite, définissez un attribut sur le span en utilisant l'assistant d'attribut qui correspond au type de la valeur du tag, voir également [les limitations de tag ci-dessous](#go-limitations).

Le nom de l'attribut du span a le format suivant : `appsignal.tag.<tag name>`. Remplacez `<tag name>` par le nom du tag.

<CodeGroup>
  ```go Go theme={null}
  // Example format
  span.SetAttributes(attribute.String("appsignal.tag.<tag_name>", "string"))

  // Supported types
  span.SetAttributes(attribute.String("appsignal.tag.my_tag_string", "tag value"))
  span.SetAttributes(attribute.StringSlice("appsignal.tag.my_tag_int64", []string{"abc", "def"}))
  span.SetAttributes(attribute.Bool("appsignal.tag.my_tag_bool_true", true))
  span.SetAttributes(attribute.Bool("appsignal.tag.my_tag_bool_false", false))
  span.SetAttributes(attribute.BoolSlice("appsignal.tag.my_tag_bool_slice", []bool{true, false}))
  span.SetAttributes(attribute.Float64("appsignal.tag.my_tag_float64", 12.34))
  span.SetAttributes(attribute.Float64Slice("appsignal.tag.my_tag_float64_slice", []float64{12.34, 56.78}))
  span.SetAttributes(attribute.Int("appsignal.tag.my_tag_int", 1234))
  span.SetAttributes(attribute.IntSlice("appsignal.tag.my_tag_int", []int{1234, 5678}))
  span.SetAttributes(attribute.Int64("appsignal.tag.my_tag_int64", 1234))
  span.SetAttributes(attribute.Int64Slice("appsignal.tag.my_tag_int64_slice", []int64{1234, 5678}))
  ```
</CodeGroup>

### Limitations {/* id: go-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une String.
* La valeur taguée doit être une String, un Integer, un Float, un Boolean, ou une slice de ces types.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs de type tableau sont aplaties en valeurs séparées par des virgules.
* Les valeurs d'objet imbriquées (maps) ne sont pas prises en charge pour les tags.

## Java

Dans une application Java, pour ajouter un tag AppSignal à un span sur une trace, récupérez d'abord le span actif ou créez un nouveau span comme décrit sur [notre page d'instrumentation personnalisée Java](/java/custom-instrumentation).

Ensuite, définissez un attribut sur le span en utilisant la méthode `setAttribute`. Le nom de l'attribut du span a le format suivant : `appsignal.tag.<tag name>`. Remplacez `<tag name>` par le nom du tag.

<CodeGroup>
  ```java Java theme={null}
  import io.opentelemetry.api.trace.Span;
  import io.opentelemetry.api.common.AttributeKey;

  // Get the current span
  Span span = Span.current();

  // Example format
  span.setAttribute("appsignal.tag.<tag_name>", "string");

  // Set tags as span attributes
  span.setAttribute("appsignal.tag.my_tag_string", "tag value");
  span.setAttribute(AttributeKey.stringArrayKey("appsignal.tag.my_tag_string_array"), Arrays.asList("abc", "def"));
  span.setAttribute("appsignal.tag.my_tag_bool_true", true);
  span.setAttribute("appsignal.tag.my_tag_bool_false", false);
  span.setAttribute(AttributeKey.booleanArrayKey("appsignal.tag.my_tag_bool_array"), Arrays.asList(true, false));
  span.setAttribute("appsignal.tag.my_tag_float64", 12.34);
  span.setAttribute(AttributeKey.doubleArrayKey("appsignal.tag.my_tag_float64_array"), Arrays.asList(12.34, 56.78));
  span.setAttribute("appsignal.tag.my_tag_int", 1234);
  span.setAttribute(AttributeKey.longArrayKey("appsignal.tag.my_tag_int_array"), Arrays.asList(1234L, 5678L));
  span.setAttribute("appsignal.tag.my_tag_int64", 1234);
  span.setAttribute(AttributeKey.longArrayKey("appsignal.tag.my_tag_int64_array"), Arrays.asList(1234L, 5678L));
  ```
</CodeGroup>

### Limitations {/* id: java-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une String.
* La valeur taguée doit être une String, un Integer, un Long, un Double ou un Boolean, ou une liste de ces valeurs.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs de type tableau sont aplaties en valeurs séparées par des virgules.
* Les valeurs d'objet imbriquées (maps) ne sont pas prises en charge pour les tags.

## PHP

Dans les applications PHP, pour ajouter un tag AppSignal à un span sur une trace, utilisez la méthode d'assistance `Appsignal::addTags()`.

<CodeGroup>
  ```php PHP theme={null}
  <?php

  // Add tags to the current span
  Appsignal::addTags([
      'my_tag_string' => 'tag value',
      'my_tag_string_slice' => ['abc', 'def'],
      'my_tag_bool_true' => true,
      'my_tag_bool_false' => false,
      'my_tag_bool_slice' => [true, false],
      'my_tag_float64' => 12.34,
      'my_tag_float64_slice' => [12.34, 56.78],
      'my_tag_int' => 1234,
      'my_tag_int_slice' => [1234, 5678],
      'my_tag_int64' => 1234,
      'my_tag_int64_slice' => [1234, 5678],
  ]);
  ```
</CodeGroup>

### Limitations {/* id: php-limitations */}

Les tags qui ne respectent pas ces limitations sont supprimés sans avertissement.

* La clé du tag doit être une String.
* La valeur taguée doit être une String, un Integer, un Float ou un Boolean, ou une slice de ces valeurs.
* La longueur de la valeur du tag doit être inférieure à 256 caractères.
* Les valeurs de type tableau sont aplaties en valeurs séparées par des virgules.
* Les valeurs d'objet imbriquées (maps) ne sont pas prises en charge pour les tags.
