> ## 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 zu einer Anfrage hinzufügen

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

Sie können Tagging verwenden, um zusätzlichen Kontext zu Fehlern und Performance-Vorfällen bereitzustellen. Tagging kann helfen, Informationen hinzuzufügen, die nicht bereits Teil einer Anfrage sind, wie z. B. Session-Daten, Header, Umgebungsdaten oder Parameter. Tags können auch verwendet werden, um Samples innerhalb eines Vorfalls zu filtern, um alle Fehler für einen bestimmten Benutzer oder langsame Seiten für ein bestimmtes Locale zu finden.

Sie können Tags überall dort setzen, wo die aktuelle Transaktion oder der Span zugänglich ist. Wir empfehlen, es vor dem Ausführen Ihres Anwendungscodes in einer Anfrage aufzurufen, z. B. in einem Callback. Sie können sehen, welche Tags auf ein Sample angewendet werden, auf der [Error and Performance](https://appsignal.com/redirect-to/app?to=performance)-Vorfallsseite.

Mit [Link-Templates](/application/link-templates) ist es möglich, Links zu Ihrer Anwendung mit Tag-Daten hinzuzufügen, z. B. das Admin-Panel für den angemeldeten Benutzer. Sie können dies in der Praxis im untenstehenden Screenshot mit den Tags `Link 1` und `Link 2` sehen.

<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>
  🔐 Senden Sie keine <strong>personenbezogenen Daten (Personal Identifiable Information, PII)</strong> an AppSignal. Filtern Sie PII (z. B. Namen, E-Mail-Adressen) und verwenden Sie stattdessen eine ID, einen Hash oder einen pseudonymisierten Bezeichner. <br /> <br /> Verwenden Sie [Link Templates](https://docs.appsignal.com/application/link-templates), um sie in Ihrer Anwendung zurückzuverknüpfen.
</Warning>

## Ruby

Mit dem [AppSignal-for-Ruby](/ruby)-Gem verwenden Sie die Hilfsmethoden `Appsignal.add_tags`, um Tags zu Fehler- und Performance-Samples hinzuzufügen. In Ruby-Gem-Version 3 und älter verwenden Sie den `Appsignal.set_tags`-Helfer.

Sie können `Appsignal.add_tags` überall dort verwenden, wo eine aktive Transaktion zugänglich ist. Wir empfehlen, es vor dem Ausführen Ihres Anwendungscodes in der Anfrage aufzurufen, z. B. in einem `before_action` mit 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>

### Standard-Tags

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

Sie können Tags konfigurieren, die zu allen Transaktionen hinzugefügt werden, indem Sie die [`default_tags`-Konfigurationsoption](/ruby/configuration/options#option-default_tags) verwenden. Diese Tags werden automatisch auf jede Transaktion angewendet. Transaktionsspezifische Tags, die mit `Appsignal.add_tags` gesetzt werden, überschreiben Standard-Tags mit demselben Schlüssel.

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

### Einschränkungen {/* id: ruby-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein String oder ein Symbol sein.
* Der getaggte Wert muss ein String, ein Symbol, ein Integer oder ein Boolean (true/false) sein.
  * Boolean-Werte werden in Ruby-Gem 3.11 und neuer unterstützt.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Verschachtelte Hash-Werte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen [benutzerdefinierte Daten](/guides/custom-data/custom-data).

<CodeGroup>
  ```ruby Ruby theme={null}
  # Nicht unterstützt: Hash-Werttyp wird nicht unterstützt
  Appsignal.add_tags(
    :i18n => {
      :locale => I18n.locale,
      :default_locale => I18n.default_locale
    }
  )
  ```
</CodeGroup>

## Elixir

Verwenden Sie die Funktion [`Appsignal.Span.set_sample_data`](https://hexdocs.pm/appsignal/Appsignal.Span.html#set_sample_data/2), um zusätzlichen Kontext zu Fehler- und Performance-Samples bereitzustellen. Verwenden Sie den Sample-Schlüssel `"tags"` für die Funktion, um dem Span Tags hinzuzufügen.

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

### Letzter Aufruf ist maßgebend

Der `set_sample_data`-Helfer kann mehrmals aufgerufen werden, aber nur der letzte Wert wird beibehalten. Wenn der untenstehende Code ausgeführt wird:

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

werden die folgenden Tags gespeichert:

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

### Sample-Daten an einem Span setzen

Um Sample-Daten an einem Span hinzuzufügen, sobald er erstellt wird, fügen Sie ein `custom_on_create_fun` hinzu:

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

Fügen Sie es dann zur Konfiguration Ihrer App hinzu:

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

Das `custom_on_create_fun` erfordert AppSignal for Elixir Version 2.8.3 oder höher.

### Einschränkungen {/* id: elixir-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein `String` oder `Atom` sein.
* Der getaggte Wert muss ein `String`, `Atom` oder `Integer` sein.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Verschachtelte Map-Werte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen [benutzerdefinierte Daten](/guides/custom-data/custom-data).

<CodeGroup>
  ```elixir Elixir theme={null}
  # Nicht unterstützt: Map-Werttyp wird nicht unterstützt
  Appsignal.Span.set_sample_data(
    Appsignal.Tracer.root_span,
    "tags",
    %{
      i18n: %{
        locale: "en_GB",
        default_locale: "en_US"
      }
    }
  )
  ```
</CodeGroup>

## Node.js

Importieren Sie die Hilfsfunktion `setTag`, um Tags zu Spans für Fehler- und Performance-Samples hinzuzufügen.

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

### Einschränkungen {/* id: nodejs-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein `String` sein.
* Der getaggte Wert muss ein `String`, `Number` oder `Boolean` sein.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Verschachtelte Objektwerte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen die Hilfsfunktion [`setCustomData`](/guides/custom-data/custom-data).

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

  # Nicht unterstützt: Objekt-Werttyp wird nicht unterstützt
  span.set("i18n", { locale: "en_GB", default_locale: "en_US" });
  ```
</CodeGroup>

## Python

Importieren Sie die Hilfsmethode `set_tag`, um Tags zu Spans für Fehler- und Performance-Samples hinzuzufügen.

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

### Einschränkungen {/* id: python-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein String sein.
* Der getaggte Wert muss ein String, Integer, Float oder Boolean sein.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Verschachtelte Objektwerte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen die Hilfsfunktion [`set_custom_data`](/guides/custom-data/custom-data).

## Go

Um in einer Go-App ein AppSignal-Tag zu einem Span in einem Trace hinzuzufügen, rufen Sie zuerst den aktiven Span ab oder erstellen einen neuen Span, wie auf [unserer Seite zur benutzerdefinierten Go-Instrumentierung](/go/custom-instrumentation) beschrieben.

Setzen Sie dann ein Attribut am Span mit dem Attribut-Helper, der dem Typ des Tag-Werts entspricht, siehe auch [die Tag-Einschränkungen unten](#go-limitations).

Der Span-Attribut-Name hat das folgende Format: `appsignal.tag.<tag name>`. Ersetzen Sie `<tag name>` durch den Namen des Tags.

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

  // Unterstützte Typen
  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>

### Einschränkungen {/* id: go-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein String sein.
* Der getaggte Wert muss ein String, Integer, Float, Boolean oder ein Slice dieser Typen sein.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Array-Werte werden zu durch Kommas getrennten Werten abgeflacht.
* Verschachtelte Objektwerte (Maps) werden für Tags nicht unterstützt.

## Java

Um in einer Java-App ein AppSignal-Tag zu einem Span in einem Trace hinzuzufügen, rufen Sie zuerst den aktiven Span ab oder erstellen einen neuen Span, wie auf [unserer Seite zur benutzerdefinierten Java-Instrumentierung](/java/custom-instrumentation) beschrieben.

Setzen Sie dann ein Attribut am Span mit der `setAttribute`-Methode. Der Span-Attribut-Name hat das folgende Format: `appsignal.tag.<tag name>`. Ersetzen Sie `<tag name>` durch den Namen des Tags.

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

  // Den aktuellen Span abrufen
  Span span = Span.current();

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

  // Tags als Span-Attribute setzen
  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>

### Einschränkungen {/* id: java-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein String sein.
* Der getaggte Wert muss ein String, Integer, Long, Double oder Boolean oder eine Liste dieser Werte sein.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Array-Werte werden zu durch Kommas getrennten Werten abgeflacht.
* Verschachtelte Objektwerte (Maps) werden für Tags nicht unterstützt.

## PHP

Um in PHP-Anwendungen ein AppSignal-Tag zu einem Span in einem Trace hinzuzufügen, verwenden Sie die Hilfsmethode `Appsignal::addTags()`.

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

  // Tags zum aktuellen Span hinzufügen
  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>

### Einschränkungen {/* id: php-limitations */}

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.

* Der Tag-Schlüssel muss ein String sein.
* Der getaggte Wert muss ein String, Integer, Float oder Boolean oder ein Slice dieser Werte sein.
* Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
* Array-Werte werden zu durch Kommas getrennten Werten abgeflacht.
* Verschachtelte Objektwerte (Maps) werden für Tags nicht unterstützt.
