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

# Tags toevoegen aan een request

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>;
};

U kunt tagging gebruiken om extra context te bieden bij fouten en prestatie-incidenten. Tagging kan helpen om informatie toe te voegen die nog geen onderdeel is van een request, zoals de sessiegegevens, headers, omgevingsgegevens of parameters. Tags kunnen ook worden gebruikt om te filteren op samples binnen een incident om alle fouten voor een specifieke gebruiker of trage pagina's voor een bepaalde locale te vinden.

U kunt tags overal instellen waar de huidige transactie of span toegankelijk is. We raden aan het aan te roepen voordat uw applicatiecode in een request wordt uitgevoerd, zoals in een callback. U kunt op de [Error- en Performance](https://appsignal.com/redirect-to/app?to=performance) incident-pagina zien welke tags op een sample van toepassing zijn.

Met behulp van [Link Templates](/application/link-templates) is het mogelijk om links naar uw applicatie toe te voegen met tag-gegevens, zoals het beheerderspaneel voor de aangemelde gebruiker. U kunt dit in de praktijk zien in de onderstaande screenshot, met de `Link 1` en `Link 2` tags.

<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>
  🔐 Stuur geen <strong>Persoonlijk Identificeerbare Informatie (PII)</strong> naar AppSignal. Filter PII (bijv. namen, e-mailadressen) en gebruik in plaats daarvan een ID, hash of gepseudonimiseerde identificator. <br /> <br /> Gebruik [Link Templates](https://docs.appsignal.com/application/link-templates) om ze in uw app terug te koppelen.
</Warning>

## Ruby

Met de [AppSignal voor Ruby](/ruby) gem gebruikt u de `Appsignal.add_tags` helper-methoden om tags toe te voegen aan fout- en prestatie-samples. Op Ruby gem-versie 3 en ouder gebruikt u de `Appsignal.set_tags` helper.

U kunt `Appsignal.add_tags` overal gebruiken waar een actieve transactie toegankelijk is. We raden aan het aan te roepen voordat uw applicatiecode in het request wordt uitgevoerd, zoals in een `before_action` bij gebruik van 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>

### Standaardtags

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

U kunt tags configureren die aan alle transacties worden toegevoegd met behulp van de [`default_tags` configuratieoptie](/ruby/configuration/options#option-default_tags). Deze tags worden automatisch toegepast op elke transactie. Transactiespecifieke tags die zijn ingesteld met `Appsignal.add_tags` overschrijven standaardtags met dezelfde sleutel.

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

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een String of Symbol zijn.
* De tagwaarde moet een String, Symbol, Integer of Boolean (true/false) zijn.
  * Boolean-waarden worden ondersteund in Ruby gem 3.11 en nieuwer.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Geneste hash-waarden worden niet ondersteund voor tags, gebruik in plaats daarvan [aangepaste gegevens](/guides/custom-data/custom-data).

<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

Gebruik de [`Appsignal.Span.set_sample_data`](https://hexdocs.pm/appsignal/Appsignal.Span.html#set_sample_data/2) functie om extra context te bieden bij fout- en prestatie-samples. Gebruik de `"tags"` sample-sleutel voor de functie om tags aan de span toe te voegen.

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

### Laatste aanroep is leidend

De `set_sample_data` helper kan meerdere keren worden aangeroepen, maar alleen de laatste waarde wordt behouden. Wanneer de onderstaande code wordt uitgevoerd:

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

resulteert dit in de volgende opgeslagen tags:

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

### Sample-data instellen op een span

Om sample-data aan een span toe te voegen zodra deze wordt aangemaakt, voegt u een `custom_on_create_fun` toe:

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

Voeg deze vervolgens toe aan de configuratie van uw app:

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

De `custom_on_create_fun` vereist AppSignal voor Elixir versie 2.8.3 of hoger.

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een `String` of `Atom` zijn.
* De tagwaarde moet een `String`, `Atom` of `Integer` zijn.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Geneste map-waarden worden niet ondersteund voor tags, gebruik in plaats daarvan [aangepaste gegevens](/guides/custom-data/custom-data).

<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

Importeer de `setTag` helper-functie om tags toe te voegen aan spans voor fout- en prestatie-samples.

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

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een `String` zijn.
* De tagwaarde moet een `String`, `Number` of `Boolean` zijn.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Geneste object-waarden worden niet ondersteund voor tags, gebruik in plaats daarvan de [`setCustomData`](/guides/custom-data/custom-data) helper-functie.

<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

Importeer de `set_tag` helper-methode om tags toe te voegen aan spans voor fout- en prestatie-samples.

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

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een String zijn.
* De tagwaarde moet een String, Integer, Float of Boolean zijn.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Geneste object-waarden worden niet ondersteund voor tags, gebruik in plaats daarvan de [`set_custom_data`](/guides/custom-data/custom-data) helper-functie.

## Go

In een Go-app, om een AppSignal-tag toe te voegen aan een span op een trace, haalt u eerst de actieve span op of maakt u een nieuwe span aan zoals beschreven op [onze Go custom instrumentation-pagina](/go/custom-instrumentation).

Stel vervolgens een attribuut in op de span met behulp van de attribuut-helper die overeenkomt met het type van de tagwaarde, zie ook [de tag-beperkingen hieronder](#go-limitations).

De span-attribuutnaam heeft het volgende formaat: `appsignal.tag.<tag name>`. Vervang `<tag name>` door de naam van de 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>

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een String zijn.
* De tagwaarde moet een String, Integer, Float, Boolean of een slice van die typen zijn.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Array-waarden worden afgevlakt naar door komma's gescheiden waarden.
* Geneste object-waarden (maps) worden niet ondersteund voor tags.

## Java

In een Java-app, om een AppSignal-tag toe te voegen aan een span op een trace, haalt u eerst de actieve span op of maakt u een nieuwe span aan zoals beschreven op [onze Java custom instrumentation-pagina](/java/custom-instrumentation).

Stel vervolgens een attribuut in op de span met behulp van de `setAttribute` methode. De span-attribuutnaam heeft het volgende formaat: `appsignal.tag.<tag name>`. Vervang `<tag name>` door de naam van de 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>

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een String zijn.
* De tagwaarde moet een String, Integer, Long, Double of Boolean zijn, of een lijst van deze waarden.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Array-waarden worden afgevlakt naar door komma's gescheiden waarden.
* Geneste object-waarden (maps) worden niet ondersteund voor tags.

## PHP

In PHP-applicaties, om een AppSignal-tag toe te voegen aan een span op een trace, gebruikt u de `Appsignal::addTags()` helper-methode.

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

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

Tags die niet aan deze beperkingen voldoen worden zonder waarschuwing verwijderd.

* De tagsleutel moet een String zijn.
* De tagwaarde moet een String, Integer, Float of Boolean zijn, of een slice van deze waarden.
* De lengte van de tagwaarde moet minder dan 256 tekens zijn.
* Array-waarden worden afgevlakt naar door komma's gescheiden waarden.
* Geneste object-waarden (maps) worden niet ondersteund voor tags.
