---
title: "logging | Grafana Alloy documentation"
description: "Learn about the logging configuration block"
---

# `logging`

`logging` is an optional configuration block used to customize how Alloy produces log messages. `logging` is specified without a label and can only be provided once per configuration file.

## Usage

Alloy ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```alloy
logging {

}
```

## Arguments

You can use the following arguments with `logging`:

Expand table

| Name       | Type                 | Description                                | Default    | Required |
|------------|----------------------|--------------------------------------------|------------|----------|
| `format`   | `string`             | Format to use for writing log lines        | `"logfmt"` | no       |
| `level`    | `string`             | Level at which log lines should be written | `"info"`   | no       |
| `write_to` | `list(LogsReceiver)` | List of receivers to send log entries to   | `[]`       | no       |

### Log level

The following strings are recognized as valid log levels:

- `"error"`: Only write logs at the *error* level.
- `"warn"`: Only write logs at the *warn* level or above.
- `"info"`: Only write logs at *info* level or above.
- `"debug"`: Write all logs, including *debug* level logs.

### Log format

The following strings are recognized as valid log line formats:

- `"json"`: Write logs as JSON objects.
- `"logfmt"`: Write logs as [`logfmt`](https://brandur.org/logfmt) lines.

### Log receivers

The `write_to` argument allows Alloy to tee its log entries to one or more `loki.*` component log receivers in addition to the default [location](#log-location). This, for example can be the export of a `loki.write` component to send log entries directly to Loki, or a `loki.relabel` component to add a certain label first.

## Log location

Alloy writes all logs to `stderr`.

When you run Alloy as a systemd service, you can view logs written to `stderr` through `journald`.

When you run Alloy as a container, you can view logs written to `stderr` through `docker logs` or `kubectl logs`, depending on whether Docker or Kubernetes was used for deploying Alloy.

When you run Alloy as a Windows service, logs are written as event logs. You can view the logs through Event Viewer.

In other cases, redirect `stderr` of the Alloy process to a file for logs to persist on disk.

## Retrieve logs

You can retrieve the logs in different ways depending on your platform and installation method:

**Linux:**

- If you’re running Alloy with systemd, use `journalctl -u alloy`.
- If you’re running Alloy in a Docker container, use `docker logs CONTAINER_ID`.

**macOS:**

- If you’re running Alloy with Homebrew as a service, use `brew services info grafana/grafana/alloy` to check status and `tail -f $(brew --prefix)/var/log/alloy.log` for logs.
- If you’re running Alloy with launchd, use `log show --predicate 'process == "alloy"' --info` or check `/usr/local/var/log/alloy.log`.
- If you’re running Alloy in a Docker container, use `docker logs CONTAINER_ID`.

**Windows:**

- If you’re running Alloy as a Windows service, check the Windows Event Viewer under **Windows Logs** &gt; **Application** for Alloy-related events.
- If you’re running Alloy that is manually installed, check the log files in `%PROGRAMDATA%\Grafana\Alloy\logs\` or the directory specified in your configuration.
- If you’re running Alloy in a Docker container, use `docker logs CONTAINER_ID`.

**All platforms:**

- Alloy writes logs to `stderr` if started directly without a service manager.

## Example

Alloy ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```alloy
logging {
  level  = "info"
  format = "logfmt"
}
```
