# Environment Variables Configure LogWisp through environment variables for containerized deployments. ## Naming Convention - **Prefix**: `LOGWISP_` - **Path separator**: `_` (underscore) - **Array indices**: Numeric suffix (0-based) - **Case**: UPPERCASE Examples: - `logging.level` → `LOGWISP_LOGGING_LEVEL` - `pipelines[0].name` → `LOGWISP_PIPELINES_0_NAME` ## General Variables ### `LOGWISP_CONFIG_FILE` Configuration file path. ```bash export LOGWISP_CONFIG_FILE=/etc/logwisp/config.toml ``` ### `LOGWISP_CONFIG_DIR` Configuration directory. ```bash export LOGWISP_CONFIG_DIR=/etc/logwisp export LOGWISP_CONFIG_FILE=production.toml ``` ### `LOGWISP_ROUTER` Enable router mode. ```bash export LOGWISP_ROUTER=true ``` ### `LOGWISP_BACKGROUND` Run in background. ```bash export LOGWISP_BACKGROUND=true ``` ### `LOGWISP_QUIET` Suppress all output. ```bash export LOGWISP_QUIET=true ``` ### `LOGWISP_DISABLE_STATUS_REPORTER` Disable periodic status reporting. ```bash export LOGWISP_DISABLE_STATUS_REPORTER=true ``` ## Logging Variables ```bash # Output mode LOGWISP_LOGGING_OUTPUT=both # Log level LOGWISP_LOGGING_LEVEL=debug # File logging LOGWISP_LOGGING_FILE_DIRECTORY=/var/log/logwisp LOGWISP_LOGGING_FILE_NAME=logwisp LOGWISP_LOGGING_FILE_MAX_SIZE_MB=100 LOGWISP_LOGGING_FILE_MAX_TOTAL_SIZE_MB=1000 LOGWISP_LOGGING_FILE_RETENTION_HOURS=168 # Console logging LOGWISP_LOGGING_CONSOLE_TARGET=stderr LOGWISP_LOGGING_CONSOLE_FORMAT=json # Special console target override LOGWISP_CONSOLE_TARGET=split # Overrides sink console targets ``` ## Pipeline Configuration ### Basic Pipeline ```bash # Pipeline name LOGWISP_PIPELINES_0_NAME=app # Source configuration LOGWISP_PIPELINES_0_SOURCES_0_TYPE=directory LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATH=/var/log/app LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATTERN="*.log" LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_CHECK_INTERVAL_MS=100 # Sink configuration LOGWISP_PIPELINES_0_SINKS_0_TYPE=http LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_PORT=8080 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BUFFER_SIZE=1000 ``` ### Filters ```bash # Include filter LOGWISP_PIPELINES_0_FILTERS_0_TYPE=include LOGWISP_PIPELINES_0_FILTERS_0_LOGIC=or LOGWISP_PIPELINES_0_FILTERS_0_PATTERNS='["ERROR","WARN"]' # Exclude filter LOGWISP_PIPELINES_0_FILTERS_1_TYPE=exclude LOGWISP_PIPELINES_0_FILTERS_1_PATTERNS='["DEBUG"]' ``` ### HTTP Source ```bash LOGWISP_PIPELINES_0_SOURCES_0_TYPE=http LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PORT=8081 LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_INGEST_PATH=/ingest LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_BUFFER_SIZE=1000 LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_ENABLED=true LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=10.0 ``` ### TCP Source ```bash LOGWISP_PIPELINES_0_SOURCES_0_TYPE=tcp LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PORT=9091 LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_BUFFER_SIZE=1000 LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_ENABLED=true LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=5.0 ``` ### HTTP Sink Options ```bash # Basic LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_STREAM_PATH=/stream LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_STATUS_PATH=/status # Heartbeat LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_ENABLED=true LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_INTERVAL_SECONDS=30 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_FORMAT=comment LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_INCLUDE_TIMESTAMP=true LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_INCLUDE_STATS=false # Rate Limiting LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_ENABLED=true LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=10.0 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_BURST_SIZE=20 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_LIMIT_BY=ip LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_MAX_CONNECTIONS_PER_IP=5 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_MAX_TOTAL_CONNECTIONS=100 ``` ### HTTP Client Sink ```bash LOGWISP_PIPELINES_0_SINKS_0_TYPE=http_client LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_URL=https://log-server.com/ingest LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BATCH_SIZE=100 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BATCH_DELAY_MS=5000 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_TIMEOUT_SECONDS=30 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_RETRIES=3 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RETRY_DELAY_MS=1000 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RETRY_BACKOFF=2.0 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEADERS='{"Authorization":"Bearer "}' LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_INSECURE_SKIP_VERIFY=false ``` ### TCP Client Sink ```bash LOGWISP_PIPELINES_0_SINKS_0_TYPE=tcp_client LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_ADDRESS=remote-server.com:9090 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_DIAL_TIMEOUT_SECONDS=10 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_WRITE_TIMEOUT_SECONDS=30 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_KEEP_ALIVE_SECONDS=30 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RECONNECT_DELAY_MS=1000 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_RECONNECT_DELAY_SECONDS=30 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RECONNECT_BACKOFF=1.5 ``` ### File Sink ```bash LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_DIRECTORY=/var/log/logwisp LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_NAME=app LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_SIZE_MB=100 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_TOTAL_SIZE_MB=1000 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RETENTION_HOURS=168 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MIN_DISK_FREE_MB=1000 ``` ### Console Sinks ```bash LOGWISP_PIPELINES_0_SINKS_0_TYPE=stdout LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BUFFER_SIZE=500 LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_TARGET=stdout ``` ## Example ```bash #!/usr/bin/env bash # General settings export LOGWISP_ROUTER=true export LOGWISP_DISABLE_STATUS_REPORTER=false # Logging export LOGWISP_LOGGING_OUTPUT=both export LOGWISP_LOGGING_LEVEL=info # Pipeline 0: Application logs export LOGWISP_PIPELINES_0_NAME=app export LOGWISP_PIPELINES_0_SOURCES_0_TYPE=directory export LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATH=/var/log/myapp export LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATTERN="*.log" # Filters export LOGWISP_PIPELINES_0_FILTERS_0_TYPE=include export LOGWISP_PIPELINES_0_FILTERS_0_PATTERNS='["ERROR","WARN"]' # HTTP sink export LOGWISP_PIPELINES_0_SINKS_0_TYPE=http export LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_PORT=8080 export LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_ENABLED=true export LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=25.0 # Pipeline 1: System logs export LOGWISP_PIPELINES_1_NAME=system export LOGWISP_PIPELINES_1_SOURCES_0_TYPE=file export LOGWISP_PIPELINES_1_SOURCES_0_OPTIONS_PATH=/var/log/syslog # TCP sink export LOGWISP_PIPELINES_1_SINKS_0_TYPE=tcp export LOGWISP_PIPELINES_1_SINKS_0_OPTIONS_PORT=9090 # Pipeline 2: Remote forwarding export LOGWISP_PIPELINES_2_NAME=forwarder export LOGWISP_PIPELINES_2_SOURCES_0_TYPE=http export LOGWISP_PIPELINES_2_SOURCES_0_OPTIONS_PORT=8081 export LOGWISP_PIPELINES_2_SOURCES_0_OPTIONS_INGEST_PATH=/logs # HTTP client sink export LOGWISP_PIPELINES_2_SINKS_0_TYPE=http_client export LOGWISP_PIPELINES_2_SINKS_0_OPTIONS_URL=https://log-aggregator.example.com/ingest export LOGWISP_PIPELINES_2_SINKS_0_OPTIONS_BATCH_SIZE=100 export LOGWISP_PIPELINES_2_SINKS_0_OPTIONS_HEADERS='{"Authorization":"Bearer "}' logwisp ``` ## Precedence 1. Command-line flags (highest) 2. Environment variables 3. Configuration file 4. Defaults (lowest)