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

# Logs

> Verfolgen und durchsuchen Sie Anwendungs-Logs vom Terminal aus und verwalten Sie aus Logs abgeleitete Metriken und log-basierte Triggers.

Der `logs`-Befehl bringt die Logs Ihrer Anwendung in das Terminal: verfolgen Sie sie, sobald sie eintreffen, durchsuchen Sie einen Zeitbereich und verwalten Sie die aus Logs abgeleiteten Metriken und log-basierten Triggers, die daraus erstellt werden.

## Allgemeine Optionen

Jeder `logs`-Befehl identifiziert eine Anwendung und verwendet Ihre Standard-Organisation, sofern Sie es ihm nicht anders mitteilen:

| Flag                  | Beschreibung                                                                                                                  |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `--app <name>`        | Anwendungsname (fügen Sie `--environment` hinzu, wenn mehr als eine App den Namen teilt)                                      |
| `--environment <env>` | Umgebung, wird mit `--app` verwendet                                                                                          |
| `--app-id <id>`       | Die ID der App (eine lange hexadezimale Zeichenkette aus `appsignal-cli apps list`), anstelle von `--app` und `--environment` |
| `--org <slug>`        | Organisations-Slug (verwendet Ihren Standard, wenn weggelassen)                                                               |

## Logs verfolgen

Streamen Sie Log-Zeilen, sobald sie eintreffen (die CLI fragt jede Sekunde ab):

```sh Shell theme={null}
appsignal-cli logs tail --app "MyApp" --environment production
```

## Logs durchsuchen

Durchsuchen Sie vergangene Log-Zeilen und drucken Sie die Treffer. Zum Beispiel, finden Sie aktuelle Zeilen auf Fehler-Level:

```sh Shell theme={null}
appsignal-cli logs search --app "MyApp" --environment production --query "severity:error"
```

Standardmäßig gibt `search` bis zu 100 der jüngsten Treffer zurück. Zusätzlich zu den allgemeinen Optionen und Filtern bietet er:

| Flag                | Beschreibung                                                                                      |
| ------------------- | ------------------------------------------------------------------------------------------------- |
| `--start <ISO8601>` | Startzeit, z. B. `2025-01-01T00:00:00Z`                                                           |
| `--end <ISO8601>`   | Endzeit                                                                                           |
| `--limit <N>`       | Maximale zurückzugebende Zeilen (max. 100, auch der Standard)                                     |
| `--order <ORDER>`   | `ASC` (älteste zuerst) oder `DESC` (neueste zuerst, der Standard)                                 |
| `--page-all`        | Jede passende Zeile im Bereich abrufen. Erfordert `--start` und ignoriert `--limit` und `--order` |

Um jede Zeile in einem Fenster als JSON abzurufen, für ein Skript oder einen Agent:

```sh Shell theme={null}
appsignal-cli --output json logs search --app "MyApp" --environment production \
  --start "2025-01-01T00:00:00Z" --query "severity:error" --page-all
```

## Filter

`tail` und `search` teilen sich diese Filter:

| Flag                  | Beschreibung                                                                            |
| --------------------- | --------------------------------------------------------------------------------------- |
| `--query <text>`      | Log-Abfragefilter unter Verwendung von AppSignals [Query-Syntax](/logging/query-syntax) |
| `--severities <list>` | Kommagetrennte Severities, z. B. `ERROR,CRITICAL`                                       |
| `--source-ids <list>` | Kommagetrennte Source-IDs                                                               |
| `--view <name-or-id>` | Wendet die Filter eines gespeicherten Log Views als Standardwerte an                    |

Listen Sie die für eine App verfügbaren Views mit `appsignal-cli logs views` auf und übergeben Sie dann einen an `--view` per Name oder ID. Alle anderen Filter, die Sie hinzufügen, überschreiben die gespeicherten Standardwerte des Views. Zum Beispiel, wenden Sie einen View an, grenzen ihn aber auf kritische Zeilen ein:

```sh Shell theme={null}
appsignal-cli logs search --app "MyApp" --environment production \
  --view "Production errors" --severities CRITICAL
```

### Query-Syntax

Das Flag `--query` verwendet AppSignals [Log-Query-Syntax](/logging/query-syntax). Häufige Muster:

* `severity=error`: exakte Feldübereinstimmung
* `message:timeout`: Nachricht enthält "timeout"
* `group=notifiers`: exakte Gruppenübereinstimmung
* `hostname:web-1`: Hostname enthält "web-1"
* Leerzeichengetrennte Begriffe werden mit `AND` kombiniert; verwenden Sie `OR` für Alternativen

Eckige Klammern haben im Parser eine besondere Bedeutung, also setzen Sie sie in Anführungszeichen, um sie wörtlich abzugleichen: `message:"[Email]"`.

## Gespeicherte Views und Sources

Listen Sie die gespeicherten Log Views (Filter-Voreinstellungen) und die Log Sources einer App auf:

```sh Shell theme={null}
appsignal-cli logs views --app "MyApp" --environment production
appsignal-cli logs sources --app "MyApp" --environment production
```

Übergeben Sie den Namen oder die ID eines Views an `--view` und die ID einer Source an `--source-ids`.

## Aus Logs abgeleitete Metriken

`logs metrics` verwandelt passende Log-Zeilen in Metriken, mit `list`, `create`, `update` und `delete`:

```sh Shell theme={null}
appsignal-cli logs metrics create --app "MyApp" --environment production \
  --name "Checkout latency" \
  --query "group:checkout" \
  --metric "name=log.checkout_duration_ms,type=distribution,field=duration_ms" \
  --source-id <SOURCE_ID>
```

`create` und `update` teilen sich diese Flags (`create` erfordert `--name`, `--query` und mindestens ein `--metric`):

| Flag               | Beschreibung                                                                                              |
| ------------------ | --------------------------------------------------------------------------------------------------------- |
| `--name <name>`    | Name der Metrikkonfiguration                                                                              |
| `--query <text>`   | Query, die die zu messenden Log-Zeilen abgleicht                                                          |
| `--metric <def>`   | Metrikdefinition in `key=value`-Form (wiederholen für mehrere), z. B. `name=log.error_count,type=counter` |
| `--source-id <id>` | Auf eine Source-ID eingrenzen (wiederholen für mehr)                                                      |

`update` kann die folgenden zusätzlichen Flags annehmen. Die `--clear-*`-Flags leeren Felder, anstatt sie zu aktualisieren.

| Flag              | Beschreibung                                                          |
| ----------------- | --------------------------------------------------------------------- |
| `--id <id>`       | Die zu aktualisierende Metrik, aus `logs metrics list` (erforderlich) |
| `--clear-metrics` | Alle Metrikdefinitionen entfernen                                     |
| `--clear-sources` | Alle Source-Eingrenzungen entfernen                                   |

`delete` nimmt nur `--id`.

<Note>
  Eine aus Logs abgeleitete Metrik beginnt erst dann mit der Datenerfassung, wenn sie auf eine Log-Source eingegrenzt ist, also übergeben Sie `--source-id` (finden Sie IDs mit `appsignal-cli logs sources`). Die CLI kann den Severity-Filter einer Metrik nicht setzen; wenn Ihre Metrik einen benötigt, setzen Sie das Severity-Feld in der AppSignal-App-UI nach dem Erstellen.
</Note>

## Log-basierte Triggers

`logs triggers` alarmiert bei passenden Log-Zeilen, mit `list`, `create`, `update` und `delete`:

```sh Shell theme={null}
appsignal-cli logs triggers create --app "MyApp" --environment production \
  --name "Root login" \
  --query "message:root" \
  --severity ERROR \
  --notifier-id <NOTIFIER_ID>
```

`create` und `update` teilen sich diese Flags (`create` erfordert `--name` und `--query`):

| Flag                   | Beschreibung                                           |
| ---------------------- | ------------------------------------------------------ |
| `--name <name>`        | Trigger-Name                                           |
| `--query <text>`       | Query, die die zu alarmierenden Log-Zeilen abgleicht   |
| `--severity <level>`   | Nur diese Severities abgleichen (wiederholen für mehr) |
| `--notifier-id <id>`   | Einen Notifier anhängen (wiederholen für mehr)         |
| `--source-id <id>`     | Auf eine Source-ID eingrenzen (wiederholen für mehr)   |
| `--description <text>` | Trigger-Beschreibung                                   |

`update` kann die folgenden zusätzlichen Flags annehmen. Die `--clear-*`-Flags leeren Felder, anstatt sie zu aktualisieren.

| Flag                  | Beschreibung                                                            |
| --------------------- | ----------------------------------------------------------------------- |
| `--id <id>`           | Der zu aktualisierende Trigger, aus `logs triggers list` (erforderlich) |
| `--clear-description` | Die Beschreibung entfernen                                              |
| `--clear-notifiers`   | Alle Notifiers entfernen                                                |
| `--clear-severities`  | Alle Severities entfernen                                               |
| `--clear-sources`     | Alle Source-Eingrenzungen entfernen                                     |

`delete` nimmt nur `--id`.

<Note>
  Dies sind log-basierte Triggers, die aus Log-Zeilen erstellt werden. Für Anomaly-Detection-Triggers auf Metriken siehe [Triggers](/cli/triggers).
</Note>

## Nächste Schritte

Etwas in den Logs gefunden? Öffnen Sie die zugehörigen [Incidents](/cli/incidents) oder richten Sie [Anomaly-Detection-Triggers](/cli/triggers) ein.
