# Logs

Learn how to check Storage Logs

Open [Logs](/dashboard/project/_/logs) and select **Storage** as the log type to inspect Storage service events. Filter by time and event message to find a request.

For more advanced filtering needs, use the [Explorer](/dashboard/project/_/explorer) after selecting **Run SQL**, query source **Logs**, and a time range to query the Storage logs directly. A Logs query runs ClickHouse SQL rather than Postgres SQL. Every log line is a row in the `logs` table, tagged by a `source` column, with structured fields in a `log_attributes` map.

Note: For more details on filtering the log tables, see [Query logs with SQL](/docs/guides/observability/advanced-log-filtering)

## Example Storage queries

### Filter by status 5XX error

```sql
select
  id,
  timestamp,
  event_message,
  toInt32OrZero(log_attributes['res.statusCode']) as statusCode,
  log_attributes['error.message'] as errorMessage,
  log_attributes['error.raw'] as rawError
from logs
where source = 'storage_logs'
  and toInt32OrZero(log_attributes['res.statusCode']) >= 500
order by timestamp desc
limit 100;
```

### Filter by status 4XX error

```sql
select
  id,
  timestamp,
  event_message,
  toInt32OrZero(log_attributes['res.statusCode']) as statusCode,
  log_attributes['error.message'] as errorMessage,
  log_attributes['error.raw'] as rawError
from logs
where source = 'storage_logs'
  and toInt32OrZero(log_attributes['res.statusCode']) between 400 and 499
order by timestamp desc
limit 100;
```

### Filter by method

```sql
select id, timestamp, event_message, log_attributes['req.method'] as method
from logs
where source = 'storage_logs'
  and log_attributes['req.method'] in ('POST')
order by timestamp desc
limit 100;
```

### Filter by IP address

```sql
select id, timestamp, event_message, log_attributes['req.remoteAddress'] as remoteAddress
from logs
where source = 'storage_logs'
  and log_attributes['req.remoteAddress'] in ('IP_ADDRESS')
order by timestamp desc
limit 100;
```
