-
Notifications
You must be signed in to change notification settings - Fork 0
Home
sanjuthomas edited this page Jun 10, 2026
·
7 revisions
log-forwarder tails log files, parses and transforms lines into structured JSON, optionally filters records with predicate rules, enriches them with metadata, and publishes them through a pluggable sink to the destination you configure.
flowchart LR
subgraph local["Local disk"]
logs["Log files\n(watch paths)"]
end
subgraph host["Forwarder host"]
watcher["Watcher\ntail · rotate"]
parser["Parser\nline · multiline"]
transform["Transform\ndelimiter / regex"]
filter["Filter\nfield · compound · …"]
enrich["Enrich\nhost · static · …"]
sinkIf["Sink interface\nPublish · Close · Check"]
watcher --> parser --> transform --> filter --> enrich --> sinkIf
end
subgraph sinks["Pluggable sinks (one per config)"]
kafkaSink["kafka"]
fileSink["file"]
httpSink["http-noauth"]
customSink["custom · bigquery · …"]
end
subgraph destinations["Destinations"]
kafkaDest["Kafka topic"]
fileDest["JSONL file"]
httpDest["Open HTTP endpoint"]
customDest["Your API / warehouse"]
end
logs -->|"read new lines"| watcher
sinkIf -->|"sink.type"| kafkaSink
sinkIf --> fileSink
sinkIf --> httpSink
sinkIf --> customSink
kafkaSink --> kafkaDest
fileSink --> fileDest
httpSink --> httpDest
customSink --> customDest
The pipeline always ends at the same sink.Sink interface. sink.type in config selects the implementation; only one sink is active at runtime. Register additional types (for example http-oauth2 or BigQuery streaming) in a custom binary — see Custom-Extensions.
The repository README is a short index; this wiki has the full documentation.
| Topic | Page |
|---|---|
| Install, build, run | Installation and First Run |
| Pipeline overview | How It Works |
| YAML config (overview) | Configuration Guide |
| YAML config (full reference) | Configuration-Reference |
| Kafka, file, HTTP sinks | Choosing a Sink |
| Spring Boot / multiline logs | Spring Boot Logs |
| Watermarks, rotation, restarts | Watermarks and Restarts |
| Built-in parsers, transforms, filters | Built-in-Components |
| Custom parsers, sinks, filters | Custom-Extensions |
| Metrics, health, alerts | Monitoring |
| Unit, integration, smoke tests | Testing |
| Docker images and smoke tests | Docker |
| Production deployment | Deployment |
| Repo layout (contributors) | Development |
| Example configs | Example Configs |
| Common problems | Troubleshooting |
- One process → one sink. Run separate processes with separate watermark files to fan out to multiple destinations.
- Watermarks are per process and per source file, not per sink.
-
Default
pipeline.on_full: blockin production;dropcauses permanent log loss under overload. -
copytruncatelog rotation is not supported — use rename/create rotation.
User guide
- Home
- Installation and First Run
- How It Works
- Filtering Vendor Noise
- Log Forwarder ATC
- Configuration Guide
- Configuration-Reference
- Config-Catalog
- Choosing a Sink
- Spring Boot Logs
- Watermarks and Restarts
- Built-in-Components
- Custom-Extensions
- Monitoring
- Testing
- Docker
- Deployment
- Example Configs
- Troubleshooting
Contributors