v0.2.0 restructured to pipeline architecture, dirty
This commit is contained in:
@ -1,26 +1,20 @@
|
||||
# Quick Start Guide
|
||||
|
||||
Get LogWisp up and running in 5 minutes!
|
||||
Get LogWisp up and running in 5 minutes with the new pipeline architecture!
|
||||
|
||||
## Installation
|
||||
|
||||
### From Source
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/yourusername/logwisp.git
|
||||
git clone https://github.com/lixenwraith/logwisp.git
|
||||
cd logwisp
|
||||
|
||||
# Build and install
|
||||
make install
|
||||
|
||||
# Or just build
|
||||
make build
|
||||
./logwisp --version
|
||||
```
|
||||
|
||||
### Using Go Install
|
||||
|
||||
```bash
|
||||
go install github.com/yourusername/logwisp/src/cmd/logwisp@latest
|
||||
go install github.com/lixenwraith/logwisp/src/cmd/logwisp@latest
|
||||
```
|
||||
|
||||
## Basic Usage
|
||||
@ -35,22 +29,19 @@ logwisp
|
||||
|
||||
### 2. Stream Logs
|
||||
|
||||
In another terminal, connect to the log stream:
|
||||
Connect to the log stream:
|
||||
|
||||
```bash
|
||||
# Using curl (SSE stream)
|
||||
# SSE stream
|
||||
curl -N http://localhost:8080/stream
|
||||
|
||||
# Check status
|
||||
curl http://localhost:8080/status | jq .
|
||||
```
|
||||
|
||||
### 3. Create Some Logs
|
||||
|
||||
Generate test logs to see streaming in action:
|
||||
### 3. Generate Test Logs
|
||||
|
||||
```bash
|
||||
# In a third terminal
|
||||
echo "[ERROR] Something went wrong!" >> test.log
|
||||
echo "[INFO] Application started" >> test.log
|
||||
echo "[WARN] Low memory warning" >> test.log
|
||||
@ -60,88 +51,78 @@ echo "[WARN] Low memory warning" >> test.log
|
||||
|
||||
### Monitor Specific Directory
|
||||
|
||||
Create a configuration file `~/.config/logwisp.toml`:
|
||||
Create `~/.config/logwisp.toml`:
|
||||
|
||||
```toml
|
||||
[[streams]]
|
||||
[[pipelines]]
|
||||
name = "myapp"
|
||||
|
||||
[streams.monitor]
|
||||
targets = [
|
||||
{ path = "/var/log/myapp", pattern = "*.log", is_file = false }
|
||||
]
|
||||
[[pipelines.sources]]
|
||||
type = "directory"
|
||||
options = { path = "/var/log/myapp", pattern = "*.log" }
|
||||
|
||||
[streams.httpserver]
|
||||
enabled = true
|
||||
port = 8080
|
||||
[[pipelines.sinks]]
|
||||
type = "http"
|
||||
options = { port = 8080 }
|
||||
```
|
||||
|
||||
Run LogWisp:
|
||||
```bash
|
||||
logwisp
|
||||
```
|
||||
|
||||
### Filter Only Errors and Warnings
|
||||
|
||||
Add filters to your configuration:
|
||||
### Filter Only Errors
|
||||
|
||||
```toml
|
||||
[[streams]]
|
||||
[[pipelines]]
|
||||
name = "errors"
|
||||
|
||||
[streams.monitor]
|
||||
targets = [
|
||||
{ path = "./", pattern = "*.log" }
|
||||
]
|
||||
[[pipelines.sources]]
|
||||
type = "directory"
|
||||
options = { path = "./", pattern = "*.log" }
|
||||
|
||||
[[streams.filters]]
|
||||
[[pipelines.filters]]
|
||||
type = "include"
|
||||
patterns = ["ERROR", "WARN", "CRITICAL", "FATAL"]
|
||||
patterns = ["ERROR", "WARN", "CRITICAL"]
|
||||
|
||||
[streams.httpserver]
|
||||
enabled = true
|
||||
port = 8080
|
||||
[[pipelines.sinks]]
|
||||
type = "http"
|
||||
options = { port = 8080 }
|
||||
```
|
||||
|
||||
### Multiple Log Sources
|
||||
### Multiple Outputs
|
||||
|
||||
Monitor different applications on different ports:
|
||||
Send logs to both HTTP stream and file:
|
||||
|
||||
```toml
|
||||
# Stream 1: Web application
|
||||
[[streams]]
|
||||
name = "webapp"
|
||||
[streams.monitor]
|
||||
targets = [{ path = "/var/log/nginx", pattern = "*.log" }]
|
||||
[streams.httpserver]
|
||||
enabled = true
|
||||
port = 8080
|
||||
[[pipelines]]
|
||||
name = "multi-output"
|
||||
|
||||
# Stream 2: Database
|
||||
[[streams]]
|
||||
name = "database"
|
||||
[streams.monitor]
|
||||
targets = [{ path = "/var/log/postgresql", pattern = "*.log" }]
|
||||
[streams.httpserver]
|
||||
enabled = true
|
||||
port = 8081
|
||||
[[pipelines.sources]]
|
||||
type = "directory"
|
||||
options = { path = "/var/log/app", pattern = "*.log" }
|
||||
|
||||
# HTTP streaming
|
||||
[[pipelines.sinks]]
|
||||
type = "http"
|
||||
options = { port = 8080 }
|
||||
|
||||
# File archival
|
||||
[[pipelines.sinks]]
|
||||
type = "file"
|
||||
options = { directory = "/var/log/archive", name = "app" }
|
||||
```
|
||||
|
||||
### TCP Streaming
|
||||
|
||||
For high-performance streaming, use TCP:
|
||||
For high-performance streaming:
|
||||
|
||||
```toml
|
||||
[[streams]]
|
||||
[[pipelines]]
|
||||
name = "highperf"
|
||||
|
||||
[streams.monitor]
|
||||
targets = [{ path = "/var/log/app", pattern = "*.log" }]
|
||||
[[pipelines.sources]]
|
||||
type = "directory"
|
||||
options = { path = "/var/log/app", pattern = "*.log" }
|
||||
|
||||
[streams.tcpserver]
|
||||
enabled = true
|
||||
port = 9090
|
||||
buffer_size = 5000
|
||||
[[pipelines.sinks]]
|
||||
type = "tcp"
|
||||
options = { port = 9090, buffer_size = 5000 }
|
||||
```
|
||||
|
||||
Connect with netcat:
|
||||
@ -151,16 +132,15 @@ nc localhost 9090
|
||||
|
||||
### Router Mode
|
||||
|
||||
Consolidate multiple streams on one port using router mode:
|
||||
Run multiple pipelines on shared ports:
|
||||
|
||||
```bash
|
||||
# With the multi-stream config above
|
||||
logwisp --router
|
||||
|
||||
# Access streams at:
|
||||
# http://localhost:8080/webapp/stream
|
||||
# http://localhost:8080/database/stream
|
||||
# http://localhost:8080/status (global status)
|
||||
# Access pipelines at:
|
||||
# http://localhost:8080/myapp/stream
|
||||
# http://localhost:8080/errors/stream
|
||||
# http://localhost:8080/status (global)
|
||||
```
|
||||
|
||||
## Quick Tips
|
||||
@ -170,40 +150,23 @@ logwisp --router
|
||||
logwisp --log-level debug --log-output stderr
|
||||
```
|
||||
|
||||
### Run in Background
|
||||
```bash
|
||||
logwisp --background --config /etc/logwisp/prod.toml
|
||||
```
|
||||
|
||||
### Rate Limiting
|
||||
Protect your streams from abuse:
|
||||
|
||||
```toml
|
||||
[streams.httpserver.rate_limit]
|
||||
enabled = true
|
||||
requests_per_second = 10.0
|
||||
burst_size = 20
|
||||
max_connections_per_ip = 5
|
||||
[[pipelines.sinks]]
|
||||
type = "http"
|
||||
options = {
|
||||
port = 8080,
|
||||
rate_limit = {
|
||||
enabled = true,
|
||||
requests_per_second = 10.0,
|
||||
burst_size = 20
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### JSON Output Format
|
||||
For structured logging:
|
||||
|
||||
### Console Output
|
||||
```toml
|
||||
[logging.console]
|
||||
format = "json"
|
||||
```
|
||||
|
||||
## What's Next?
|
||||
|
||||
- Read the [Configuration Guide](configuration.md) for all options
|
||||
- Learn about [Filters](filters.md) for advanced pattern matching
|
||||
- Explore [Rate Limiting](ratelimiting.md) for production deployments
|
||||
- Check out [Example Configurations](examples/) for more scenarios
|
||||
|
||||
## Getting Help
|
||||
|
||||
- Run `logwisp --help` for CLI options
|
||||
- Check `http://localhost:8080/status` for runtime statistics
|
||||
- Enable debug logging for troubleshooting
|
||||
- Visit our [GitHub repository](https://github.com/yourusername/logwisp) for issues and discussions
|
||||
[[pipelines.sinks]]
|
||||
type = "stdout" # or "stderr"
|
||||
options = {}
|
||||
```
|
||||
Reference in New Issue
Block a user