TOML Configuration Guide ​
CDviz Collector uses TOML (Tom's Obvious Minimal Language) for configuration. This guide covers the essential TOML syntax patterns you'll need to understand when configuring the collector.
Basic TOML Syntax ​
Key-Value Pairs ​
toml
# Simple values
enabled = true
port = 8080
host = "localhost"
polling_interval = "30s"Comments ​
toml
# This is a comment
enabled = true # Inline commentTables (Sections) ​
Basic Tables ​
Tables represent configuration sections:
toml
[server]
host = "0.0.0.0"
port = 8080
[logging]
level = "info"
format = "json"Nested Tables ​
Use dot notation for nested sections:
toml
[database.connection]
host = "localhost"
port = 5432
[database.pool]
max_size = 10
timeout = "30s"Arrays ​
Simple Arrays ​
toml
# Array of strings
allowed_hosts = ["api.example.com", "webhook.example.com"]
# Array of patterns
file_patterns = ["*.json", "*.csv", "*.log"]
# Array of numbers
retry_intervals = [1, 2, 5, 10]Multi-line Arrays ​
For better readability:
toml
file_patterns = [
"*.json",
"*.csv",
"*.log",
"data/*.txt"
]Inline Tables vs Table Sections ​
Inline Tables (Single Line) ​
Good for simple configurations:
toml
# Simple inline table
server = { host = "localhost", port = 8080 }
# Connection details
database = { host = "localhost", port = 5432, name = "mydb" }Table Sections (Multi-line) ​
Better for complex configurations:
toml
# Instead of long inline table, use sections
[database.connection]
host = "localhost"
port = 5432
username = "admin"
password = "secret"
database = "myapp"Arrays of Tables ​
Double Bracket Syntax [[]] ​
Used for repeated configurations like multiple servers or database connections:
toml
# Multiple server configurations
[[servers]]
name = "web-server"
host = "localhost"
port = 8080
[[servers]]
name = "api-server"
host = "localhost"
port = 8081
# Each [[servers]] entry creates a new item in the servers arrayCommon Mistakes and Solutions ​
❌ Wrong: Mixing Inline and Section Syntax ​
toml
# Don't mix these approaches
[app.config]
name = "myapp"
database = { host = "localhost", port = 5432 }
[app.config.database] # Conflicts with inline above
username = "admin"✅ Correct: Choose One Approach ​
toml
# Option 1: All inline
[app.config]
name = "myapp"
database = { host = "localhost", port = 5432, username = "admin" }
# Option 2: All sections
[app.config]
name = "myapp"
[app.config.database]
host = "localhost"
port = 5432
username = "admin"❌ Wrong: Forgetting Double Brackets for Arrays ​
toml
# Wrong - creates separate tables instead of array
[servers.web]
name = "web-server"
[servers.web] # Overwrites previous!
name = "api-server"✅ Correct: Use Double Brackets for Array of Tables ​
toml
# Correct - creates array of server configurations
[[servers]]
name = "web-server"
[[servers]]
name = "api-server"❌ Wrong: Incorrect String Escaping ​
toml
# Wrong - unescaped backslashes
pattern = "^Bearer [A-Za-z0-9\-_]+"
# Wrong - unescaped quotes
value = "He said "hello""✅ Correct: Proper String Escaping ​
toml
# Correct - escaped backslashes
pattern = "^Bearer [A-Za-z0-9\\-_]+"
# Correct - escaped quotes
value = "He said \"hello\""
# Alternative - use single quotes when possible
pattern = '^Bearer [A-Za-z0-9\-_]+'Validation Tips ​
Check TOML Syntax ​
Use online TOML validators or tools:
bash
# Check syntax with online TOML validators
# Visit: https://www.toml-lint.com/ or https://taplo.tamasfe.dev/
# Many editors have TOML syntax highlighting
# VS Code, Vim, Emacs, etc. support TOML validationBest Practices ​
1. Use Consistent Indentation ​
toml
# Good - consistent 4-space indentation in multi-line arrays
file_patterns = [
"*.json",
"*.csv",
"*.log"
]2. Choose Appropriate Syntax for Complexity ​
toml
# Simple values - use inline tables
server = { host = "localhost", port = 8080 }
# Complex values - use table sections
[database]
host = "localhost"
port = 5432
username = "admin"
password = "secret"
pool_size = 103. Group Related Configuration ​
toml
# Group all server configurations together
[servers.web]
host = "localhost"
port = 8080
[servers.api]
host = "localhost"
port = 8081
# Group all database configurations together
[database.primary]
host = "db1.example.com"
[database.replica]
host = "db2.example.com"4. Use Comments for Clarity ​
toml
# Web server configuration
[server]
host = "0.0.0.0" # Listen on all interfaces
port = 8080 # HTTP port
# Database connection settings
[database]
host = "localhost"
port = 5432
username = "app_user"
password = "secret" # Set via environment variableRelated ​
- Configuration Reference - Complete CDviz Collector configuration options
- Header Authentication - Using the map format for headers
- Header Validation - Header validation configuration
- TOML Specification - Official TOML language specification