4.2 KiB
4.2 KiB
Configuration Reference
LogWisp configuration uses TOML format with flexible override mechanisms.
Configuration Precedence
Configuration sources are evaluated in order:
- Command-line flags (highest priority)
- Environment variables
- Configuration file
- Built-in defaults (lowest priority)
File Location
LogWisp searches for configuration in order:
- Path specified via
--configflag - Path from
LOGWISP_CONFIG_FILEenvironment variable ~/.config/logwisp/logwisp.toml./logwisp.tomlin current directory
Global Settings
Top-level configuration options:
| Setting | Type | Default | Description |
|---|---|---|---|
background |
bool | false | Run as daemon process |
quiet |
bool | false | Suppress console output |
disable_status_reporter |
bool | false | Disable periodic status logging |
config_auto_reload |
bool | false | Enable file watch for auto-reload |
Logging Configuration
LogWisp's internal operational logging:
[logging]
output = "stdout" # file|stdout|stderr|split|all|none
level = "info" # debug|info|warn|error
[logging.file]
directory = "./log"
name = "logwisp"
max_size_mb = 100
max_total_size_mb = 1000
retention_hours = 168.0
[logging.console]
target = "stdout" # stdout|stderr|split
format = "txt" # txt|json
Output Modes
- file: Write to log files only
- stdout: Write to standard output
- stderr: Write to standard error
- split: INFO/DEBUG to stdout, WARN/ERROR to stderr
- all: Write to both file and console
- none: Disable all logging
Pipeline Configuration
Each [[pipelines]] section defines an independent processing pipeline:
[[pipelines]]
name = "pipeline-name"
# Rate limiting (optional)
[pipelines.rate_limit]
rate = 1000.0
burst = 2000.0
policy = "drop" # pass|drop
max_entry_size_bytes = 0 # 0=unlimited
# Format configuration (optional)
[pipelines.format]
type = "json" # raw|json|txt
# Sources (required, 1+)
[[pipelines.sources]]
type = "directory"
# ... source-specific config
# Filters (optional)
[[pipelines.filters]]
type = "include"
logic = "or"
patterns = ["ERROR", "WARN"]
# Sinks (required, 1+)
[[pipelines.sinks]]
type = "http"
# ... sink-specific config
Environment Variables
All configuration options support environment variable overrides:
Naming Convention
- Prefix:
LOGWISP_ - Path separator:
_(underscore) - Array indices: Numeric suffix (0-based)
- Case: UPPERCASE
Mapping Examples
| TOML Path | Environment Variable |
|---|---|
quiet |
LOGWISP_QUIET |
logging.level |
LOGWISP_LOGGING_LEVEL |
pipelines[0].name |
LOGWISP_PIPELINES_0_NAME |
pipelines[0].sources[0].type |
LOGWISP_PIPELINES_0_SOURCES_0_TYPE |
Command-Line Overrides
All configuration options can be overridden via CLI flags:
logwisp --quiet \
--logging.level=debug \
--pipelines.0.name=myapp \
--pipelines.0.sources.0.type=stdin
Configuration Validation
LogWisp validates configuration at startup:
- Required fields presence
- Type correctness
- Port conflicts
- Path accessibility
- Pattern compilation
- Network address formats
Hot Reload
Enable configuration hot reload:
config_auto_reload = true
Or via command line:
logwisp --config-auto-reload
Reload triggers:
- File modification detection
- SIGHUP or SIGUSR1 signals
Reloadable items:
- Pipeline configurations
- Sources and sinks
- Filters and formatters
- Rate limits
Non-reloadable (requires restart):
- Logging configuration
- Background mode
- Global settings
Default Configuration
Minimal working configuration:
[[pipelines]]
name = "default"
[[pipelines.sources]]
type = "directory"
[pipelines.sources.directory]
path = "./"
pattern = "*.log"
[[pipelines.sinks]]
type = "console"
[pipelines.sinks.console]
target = "stdout"
Configuration Schema
Type Reference
| TOML Type | Go Type | Environment Format |
|---|---|---|
| String | string | Plain text |
| Integer | int64 | Numeric string |
| Float | float64 | Decimal string |
| Boolean | bool | true/false |
| Array | []T | JSON array string |
| Table | struct | Nested with _ |