Environment Variables Configuration
Environment variables provide a flexible way to configure ByteHide Logger across different environments without changing code. Ideal for containerized applications and CI/CD deployments.
Project Token Environment Variables
The SDK checks the following environment variables in order:
BYTEHIDE_LOGS_TOKENBYTEHIDE_PROJECT_TOKENPROJECT_TOKEN
Go
import logs "github.com/bytehide/bytehide-logs-go"
// Automatically reads from environment variables
logs.SetProject()import logs "github.com/bytehide/bytehide-logs-go"
// Automatically reads from environment variables
logs.SetProject()Or read manually:
Go
import (
"os"
logs "github.com/bytehide/bytehide-logs-go"
)
projectToken := os.Getenv("BYTEHIDE_LOGS_TOKEN")
logs.SetProjectToken(projectToken)import (
"os"
logs "github.com/bytehide/bytehide-logs-go"
)
projectToken := os.Getenv("BYTEHIDE_LOGS_TOKEN")
logs.SetProjectToken(projectToken)Common Environment Variables
Project Token
Bash
export BYTEHIDE_LOGS_TOKEN=your-project-token-hereexport BYTEHIDE_LOGS_TOKEN=your-project-token-hereLog Level
Bash
export BYTEHIDE_LOG_LEVEL=Infoexport BYTEHIDE_LOG_LEVEL=InfoGo
import (
"os"
"strings"
logs "github.com/bytehide/bytehide-logs-go"
)
logLevelStr := os.Getenv("BYTEHIDE_LOG_LEVEL")
if logLevelStr != "" {
// Parse log level based on string value
levelStr := strings.ToUpper(logLevelStr)
switch levelStr {
case "TRACE":
logs.SetMinimumLevel(logs.LogLevelTrace)
case "DEBUG":
logs.SetMinimumLevel(logs.LogLevelDebug)
case "INFO":
logs.SetMinimumLevel(logs.LogLevelInfo)
case "WARN":
logs.SetMinimumLevel(logs.LogLevelWarn)
case "ERROR":
logs.SetMinimumLevel(logs.LogLevelError)
case "CRITICAL":
logs.SetMinimumLevel(logs.LogLevelCritical)
}
}import (
"os"
"strings"
logs "github.com/bytehide/bytehide-logs-go"
)
logLevelStr := os.Getenv("BYTEHIDE_LOG_LEVEL")
if logLevelStr != "" {
// Parse log level based on string value
levelStr := strings.ToUpper(logLevelStr)
switch levelStr {
case "TRACE":
logs.SetMinimumLevel(logs.LogLevelTrace)
case "DEBUG":
logs.SetMinimumLevel(logs.LogLevelDebug)
case "INFO":
logs.SetMinimumLevel(logs.LogLevelInfo)
case "WARN":
logs.SetMinimumLevel(logs.LogLevelWarn)
case "ERROR":
logs.SetMinimumLevel(logs.LogLevelError)
case "CRITICAL":
logs.SetMinimumLevel(logs.LogLevelCritical)
}
}File Path
Bash
export BYTEHIDE_LOG_PATH=logs/application.logexport BYTEHIDE_LOG_PATH=logs/application.logGo
import (
"os"
logs "github.com/bytehide/bytehide-logs-go"
)
logPath := os.Getenv("BYTEHIDE_LOG_PATH")
if logPath != "" {
logs.SetPersist(true)
logs.SetFilePath(logPath)
}import (
"os"
logs "github.com/bytehide/bytehide-logs-go"
)
logPath := os.Getenv("BYTEHIDE_LOG_PATH")
if logPath != "" {
logs.SetPersist(true)
logs.SetFilePath(logPath)
}Complete Environment Configuration
Environment Variables
Bash
# Core settings
BYTEHIDE_LOGS_TOKEN=your-project-token
BYTEHIDE_LOG_LEVEL=Info
BYTEHIDE_LOG_PATH=logs/app.log
# Console settings
BYTEHIDE_CONSOLE_ENABLED=true
# File settings
BYTEHIDE_ROLLING_INTERVAL=Day
# Performance settings
BYTEHIDE_DUPLICATE_SUPPRESSION_MS=5000# Core settings
BYTEHIDE_LOGS_TOKEN=your-project-token
BYTEHIDE_LOG_LEVEL=Info
BYTEHIDE_LOG_PATH=logs/app.log
# Console settings
BYTEHIDE_CONSOLE_ENABLED=true
# File settings
BYTEHIDE_ROLLING_INTERVAL=Day
# Performance settings
BYTEHIDE_DUPLICATE_SUPPRESSION_MS=5000Application Configuration
Go
import (
"os"
"strings"
"strconv"
logs "github.com/bytehide/bytehide-logs-go"
)
func initializeFromEnvironment() {
// Project token
logs.SetProject()
// Log level
logLevel := os.Getenv("BYTEHIDE_LOG_LEVEL")
if logLevel != "" {
setLogLevelFromString(logLevel)
}
// Console
consoleEnabled := os.Getenv("BYTEHIDE_CONSOLE_ENABLED")
logs.SetConsoleEnabled(strings.EqualFold(consoleEnabled, "true"))
// File logging
logPath := os.Getenv("BYTEHIDE_LOG_PATH")
if logPath != "" {
logs.SetPersist(true)
logs.SetFilePath(logPath)
}
// Rolling interval
rollingInterval := os.Getenv("BYTEHIDE_ROLLING_INTERVAL")
if rollingInterval != "" {
setRollingIntervalFromString(rollingInterval)
}
// Duplicate suppression
suppressionMs := os.Getenv("BYTEHIDE_DUPLICATE_SUPPRESSION_MS")
if suppressionMs != "" {
if ms, err := strconv.ParseInt(suppressionMs, 10, 64); err == nil {
logs.SetDuplicateSuppressionWindow(ms)
}
}
}
func setLogLevelFromString(level string) {
switch strings.ToUpper(level) {
case "TRACE":
logs.SetMinimumLevel(logs.LogLevelTrace)
case "DEBUG":
logs.SetMinimumLevel(logs.LogLevelDebug)
case "INFO":
logs.SetMinimumLevel(logs.LogLevelInfo)
case "WARN":
logs.SetMinimumLevel(logs.LogLevelWarn)
case "ERROR":
logs.SetMinimumLevel(logs.LogLevelError)
case "CRITICAL":
logs.SetMinimumLevel(logs.LogLevelCritical)
}
}
func setRollingIntervalFromString(interval string) {
switch strings.ToUpper(interval) {
case "MINUTE":
logs.SetRollingInterval(logs.RollingIntervalMinute)
case "HOUR":
logs.SetRollingInterval(logs.RollingIntervalHour)
case "DAY":
logs.SetRollingInterval(logs.RollingIntervalDay)
case "WEEK":
logs.SetRollingInterval(logs.RollingIntervalWeek)
case "MONTH":
logs.SetRollingInterval(logs.RollingIntervalMonth)
case "YEAR":
logs.SetRollingInterval(logs.RollingIntervalYear)
}
}import (
"os"
"strings"
"strconv"
logs "github.com/bytehide/bytehide-logs-go"
)
func initializeFromEnvironment() {
// Project token
logs.SetProject()
// Log level
logLevel := os.Getenv("BYTEHIDE_LOG_LEVEL")
if logLevel != "" {
setLogLevelFromString(logLevel)
}
// Console
consoleEnabled := os.Getenv("BYTEHIDE_CONSOLE_ENABLED")
logs.SetConsoleEnabled(strings.EqualFold(consoleEnabled, "true"))
// File logging
logPath := os.Getenv("BYTEHIDE_LOG_PATH")
if logPath != "" {
logs.SetPersist(true)
logs.SetFilePath(logPath)
}
// Rolling interval
rollingInterval := os.Getenv("BYTEHIDE_ROLLING_INTERVAL")
if rollingInterval != "" {
setRollingIntervalFromString(rollingInterval)
}
// Duplicate suppression
suppressionMs := os.Getenv("BYTEHIDE_DUPLICATE_SUPPRESSION_MS")
if suppressionMs != "" {
if ms, err := strconv.ParseInt(suppressionMs, 10, 64); err == nil {
logs.SetDuplicateSuppressionWindow(ms)
}
}
}
func setLogLevelFromString(level string) {
switch strings.ToUpper(level) {
case "TRACE":
logs.SetMinimumLevel(logs.LogLevelTrace)
case "DEBUG":
logs.SetMinimumLevel(logs.LogLevelDebug)
case "INFO":
logs.SetMinimumLevel(logs.LogLevelInfo)
case "WARN":
logs.SetMinimumLevel(logs.LogLevelWarn)
case "ERROR":
logs.SetMinimumLevel(logs.LogLevelError)
case "CRITICAL":
logs.SetMinimumLevel(logs.LogLevelCritical)
}
}
func setRollingIntervalFromString(interval string) {
switch strings.ToUpper(interval) {
case "MINUTE":
logs.SetRollingInterval(logs.RollingIntervalMinute)
case "HOUR":
logs.SetRollingInterval(logs.RollingIntervalHour)
case "DAY":
logs.SetRollingInterval(logs.RollingIntervalDay)
case "WEEK":
logs.SetRollingInterval(logs.RollingIntervalWeek)
case "MONTH":
logs.SetRollingInterval(logs.RollingIntervalMonth)
case "YEAR":
logs.SetRollingInterval(logs.RollingIntervalYear)
}
}Docker Configuration
Dockerfile
DOCKERFILE
ENV BYTEHIDE_LOG_LEVEL=Warn
ENV BYTEHIDE_CONSOLE_ENABLED=false
ENV BYTEHIDE_LOG_PATH=logs/production.logENV BYTEHIDE_LOG_LEVEL=Warn
ENV BYTEHIDE_CONSOLE_ENABLED=false
ENV BYTEHIDE_LOG_PATH=logs/production.logDocker Compose
YAML
version: '3.8'
services:
myapp:
image: myapp:latest
environment:
- BYTEHIDE_LOGS_TOKEN=${BYTEHIDE_LOGS_TOKEN}
- BYTEHIDE_LOG_LEVEL=Info
- BYTEHIDE_CONSOLE_ENABLED=false
- BYTEHIDE_LOG_PATH=logs/app.log
- BYTEHIDE_ROLLING_INTERVAL=Day
volumes:
- ./logs:/app/logsversion: '3.8'
services:
myapp:
image: myapp:latest
environment:
- BYTEHIDE_LOGS_TOKEN=${BYTEHIDE_LOGS_TOKEN}
- BYTEHIDE_LOG_LEVEL=Info
- BYTEHIDE_CONSOLE_ENABLED=false
- BYTEHIDE_LOG_PATH=logs/app.log
- BYTEHIDE_ROLLING_INTERVAL=Day
volumes:
- ./logs:/app/logsKubernetes Configuration
ConfigMap
YAML
apiVersion: v1
kind: ConfigMap
metadata:
name: bytehide-logger-config
data:
BYTEHIDE_LOG_LEVEL: "Info"
BYTEHIDE_CONSOLE_ENABLED: "false"
BYTEHIDE_LOG_PATH: "logs/k8s-app.log"
BYTEHIDE_ROLLING_INTERVAL: "Day"apiVersion: v1
kind: ConfigMap
metadata:
name: bytehide-logger-config
data:
BYTEHIDE_LOG_LEVEL: "Info"
BYTEHIDE_CONSOLE_ENABLED: "false"
BYTEHIDE_LOG_PATH: "logs/k8s-app.log"
BYTEHIDE_ROLLING_INTERVAL: "Day"Secret for Token
YAML
apiVersion: v1
kind: Secret
metadata:
name: bytehide-secrets
type: Opaque
data:
BYTEHIDE_LOGS_TOKEN: <base64-encoded-token>apiVersion: v1
kind: Secret
metadata:
name: bytehide-secrets
type: Opaque
data:
BYTEHIDE_LOGS_TOKEN: <base64-encoded-token>Deployment
YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: myapp
image: myapp:latest
envFrom:
- configMapRef:
name: bytehide-logger-config
- secretRef:
name: bytehide-secretsapiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: myapp
image: myapp:latest
envFrom:
- configMapRef:
name: bytehide-logger-config
- secretRef:
name: bytehide-secretsEnvironment-Specific Examples
Development
Bash
export BYTEHIDE_LOG_LEVEL=Debug
export BYTEHIDE_CONSOLE_ENABLED=true
export BYTEHIDE_LOG_PATH=logs/debug.logexport BYTEHIDE_LOG_LEVEL=Debug
export BYTEHIDE_CONSOLE_ENABLED=true
export BYTEHIDE_LOG_PATH=logs/debug.logStaging
Bash
export BYTEHIDE_LOGS_TOKEN=staging-token-here
export BYTEHIDE_LOG_LEVEL=Info
export BYTEHIDE_CONSOLE_ENABLED=false
export BYTEHIDE_LOG_PATH=logs/staging.logexport BYTEHIDE_LOGS_TOKEN=staging-token-here
export BYTEHIDE_LOG_LEVEL=Info
export BYTEHIDE_CONSOLE_ENABLED=false
export BYTEHIDE_LOG_PATH=logs/staging.logProduction
Bash
export BYTEHIDE_LOGS_TOKEN=production-token-here
export BYTEHIDE_LOG_LEVEL=Warn
export BYTEHIDE_CONSOLE_ENABLED=false
export BYTEHIDE_LOG_PATH=logs/production.log
export BYTEHIDE_DUPLICATE_SUPPRESSION_MS=10000export BYTEHIDE_LOGS_TOKEN=production-token-here
export BYTEHIDE_LOG_LEVEL=Warn
export BYTEHIDE_CONSOLE_ENABLED=false
export BYTEHIDE_LOG_PATH=logs/production.log
export BYTEHIDE_DUPLICATE_SUPPRESSION_MS=10000Best Practices
Environment Variables Best Practices
- Use descriptive prefixes (e.g.,
BYTEHIDE_) to avoid conflicts - Provide sensible defaults in your configuration parsing
- Keep sensitive data in secrets (project tokens, credentials)
- Document required variables for your deployment team
- Validate environment variables at application startup