Configure from scratch
Do these steps in order. Each step unlocks the next in the UI.
- License / onboarding
- Servers (SSH)
- Regex patterns (recommended before directories if you want structured columns)
- Directories (paths on a server)
- Presets (optional groups of directories)
- Verify targets appear under Search in
UI labels below match the English application strings.
1. License / onboarding
| Field / control | Purpose |
|---|---|
| Hardware key (Desktop) | Machine-bound identifier. Copy it and send it to an administrator to generate a desktop .logswarm.lic. |
| Installation key / fingerprint (Docker / server) | Installation-bound SHA-256 style identifier for server licenses. |
| Import license | Admin uploads a .logswarm.lic file. Valid license enables Search. |
Without a valid license, Search stays disabled and shows a renewal / missing-license message.
2. Servers (Settings → Servers)
Add each SSH host you will search.
| Field | Purpose |
|---|---|
| Name | Friendly label shown in directory lists and search targets (prod-app-01). |
| Host | Hostname or IP for SSH. |
| Port | SSH port (default 22). |
| Username | SSH login user. |
| Authentication type | Password or Private key. |
| Password | Used when auth type is password. Leave blank when editing to keep the stored secret. |
| Private key | PEM / OpenSSH private key when auth type is private key. Leave blank when editing to keep the stored key. |
| Host key (advanced / optional) | Known host key material when you pin the remote host identity. |
After saving, use Test connection to verify SSH before adding directories.
3. Regex patterns (Settings → Regex)
Define how a log line splits into named columns. Full examples: Regex patterns.
| Field | Purpose |
|---|---|
| Name | Label for this pattern (Java Log4j, Nginx access). |
| Extraction regex | Regex with capturing groups. Each group becomes a result column. Non-capturing (?:...) groups are ignored. |
| Timestamp date format | Java-style tokens describing the timestamp group, e.g. yyyy-MM-dd HH:mm:ss,SSS. |
| Boundary regex (optional) | Helps detect where one multi-line record ends and the next begins. |
| Capture groups → Group N | Human-readable column name for each capturing group (timestamp, level, message, …). |
| Timestamp (radio per group) | Mark exactly one group as the timestamp used for chronological sorting. |
Save the pattern before assigning it to directories or presets.
4. Directories (Settings → Directories)
A directory is a named search target on one server. It can contain several file locations.
| Field | Purpose |
|---|---|
| Server | Which SSH server this directory belongs to (fixed after create). |
| Name | Label shown in Search in as Server / Name. |
| File locations | One or more path definitions on that server. |
Per location
| Field | Purpose |
|---|---|
| Directory path | Remote directory to search, e.g. /var/log/nginx/ or /opt/app/logs/. |
| File filter (regex, optional) | Limits which filenames are searched, e.g. `.log$ |
| Regex pattern (optional) | Extraction pattern for lines in this location. Prefer a real pattern over None (legacy parser) for column filters and Complex mode. |
| Search method | Auto, ripgrep, zgrep, or grep — which remote tool searches files (Auto picks a suitable tool, including gzipped logs when needed). |
Use Add location when one logical directory spans multiple paths.
5. Presets (Settings → Presets)
A preset groups several directories into one Search in target (search many places at once).
| Field | Purpose |
|---|---|
| Name | Preset label in Search in. |
| Optional description | Notes for operators. |
| Regex pattern (optional) | Pattern associated with the preset when applicable. |
| Directories | Checkboxes for which directories belong to this preset (at least one required). |
6. Verify in Search
Open the main search dashboard:
- Search in should list your presets and/or
Server / Directoryentries. - Select a target that has a regex pattern with named groups → Complex mode becomes available.
- Run a simple query such as
ERRORwith a recent File modified from / to range.
If the target list is empty, go back and ensure the directory is saved on a reachable server.