# Log Scanner (`lukaskrivka/log-scanner`)

Log scanner helps you to find particular text in your log files. It can scan [Apify](https://apify.com/) runs, tasks, or actors but also arbitrary text files. If you ever had a problem finding that one error in a thousand runs, this is a tool to use.

- **URL**: https://beta-securitybyobscurity.apify.com/lukaskrivka/log-scanner.md
- **Developed by:** [Lukáš Křivka](https://beta-securitybyobscurity.apify.com/lukaskrivka) (community)
- **Categories:** Developer tools, Open source
- **Stats:** 19 total users, 2 monthly users, 99.0% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

# README

## Log Scanner

- [Features](#features)
- [Input](#input)
- [Output](#output)

### Features

Log scanner helps you to find particular text in your log files. It can scan [Apify](https://apify.com/) runs, tasks or actors but also arbitrary text files. If you ever had a problem finding that one error in a thousand runs, this is a tool to use.

- Matches regular expressions on every line of the text
- Scans infinite amount of Apify runs or text file URLs
- Provides detailed report about every match
- Can scan an actor or task with a started at and finished at bounds

### Input

Check [detailed input description](https://apify.com/lukaskrivka/log-scanner/input-schema) or just try the task on Apify.

### Output

Each matched regular expression provides a detailed report

```
{
  "lineText": "2020-08-11T12:55:25.677Z   TypeError: extractors is not a function",
  "line": 4,
  "matches": [
    "Error"
  ],
  "regex": "/Error/",
  "runId": "qW3fjxtLoYbRwIt28",
  "runStartedAt": "2020-08-11T12:55:19.411Z",
  "runFinishedAt": "2020-08-11T12:55:26.662Z"
}
```

# Actor input Schema

## `runIdsOrUrls` (type: `array`):

List of runs to check. Also can be URLs to any text files.

## `regexes` (type: `array`):

List of regexes to match on each line of the text. Can be in plain string format (Error) or in regex format that allows regex flags (/error/i)

## `actorOrTaskId` (type: `string`):

Actor or task ID

## `dateFrom` (type: `string`):

Optional date to limit from which date the run will be scanned. The date should be in ISO standard (e.g. 2020-10-01)

## `dateTo` (type: `string`):

Optional date to limit to which date the run will be scanned. The date should be in ISO standard (e.g. 2020-10-15)

## Actor input object example

```json
{
  "runIdsOrUrls": [
    "ILnaIxL36Qd9tLgUh",
    "https://api.apify.com/v2/logs/ILnaIxL36Qd9tLgUh"
  ],
  "regexes": [
    "Error"
  ]
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "runIdsOrUrls": [
        "ILnaIxL36Qd9tLgUh",
        "https://api.apify.com/v2/logs/ILnaIxL36Qd9tLgUh"
    ],
    "regexes": [
        "Error"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lukaskrivka/log-scanner").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "runIdsOrUrls": [
        "ILnaIxL36Qd9tLgUh",
        "https://api.apify.com/v2/logs/ILnaIxL36Qd9tLgUh",
    ],
    "regexes": ["Error"],
}

# Run the Actor and wait for it to finish
run = client.actor("lukaskrivka/log-scanner").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "runIdsOrUrls": [
    "ILnaIxL36Qd9tLgUh",
    "https://api.apify.com/v2/logs/ILnaIxL36Qd9tLgUh"
  ],
  "regexes": [
    "Error"
  ]
}' |
apify call lukaskrivka/log-scanner --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lukaskrivka/log-scanner",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Log Scanner",
        "description": "Log scanner helps you to find particular text in your log files. It can scan [Apify](https://apify.com/) runs, tasks, or actors but also arbitrary text files. If you ever had a problem finding that one error in a thousand runs, this is a tool to use.",
        "version": "0.0",
        "x-build-id": "8evKeizU6o9ymr7S0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lukaskrivka~log-scanner/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lukaskrivka-log-scanner",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lukaskrivka~log-scanner/runs": {
            "post": {
                "operationId": "runs-sync-lukaskrivka-log-scanner",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lukaskrivka~log-scanner/run-sync": {
            "post": {
                "operationId": "run-sync-lukaskrivka-log-scanner",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "runIdsOrUrls": {
                        "title": "Rud IDs (or text file ULRs)",
                        "type": "array",
                        "description": "List of runs to check. Also can be URLs to any text files.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "regexes": {
                        "title": "Matching regexes",
                        "type": "array",
                        "description": "List of regexes to match on each line of the text. Can be in plain string format (Error) or in regex format that allows regex flags (/error/i)",
                        "items": {
                            "type": "string"
                        }
                    },
                    "actorOrTaskId": {
                        "title": "Actor or task ID",
                        "type": "string",
                        "description": "Actor or task ID"
                    },
                    "dateFrom": {
                        "title": "Date from",
                        "type": "string",
                        "description": "Optional date to limit from which date the run will be scanned. The date should be in ISO standard (e.g. 2020-10-01)"
                    },
                    "dateTo": {
                        "title": "Date to",
                        "type": "string",
                        "description": "Optional date to limit to which date the run will be scanned. The date should be in ISO standard (e.g. 2020-10-15)"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
