/

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:

  1. BYTEHIDE_LOGS_TOKEN
  2. BYTEHIDE_PROJECT_TOKEN
  3. PROJECT_TOKEN
Go
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)

Common Environment Variables

Project Token

Bash
export BYTEHIDE_LOGS_TOKEN=your-project-token-here

Log Level

Bash
export BYTEHIDE_LOG_LEVEL=Info
Go
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.log
Go
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

Application 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)
    }
}

Docker Configuration

Dockerfile

DOCKERFILE
ENV BYTEHIDE_LOG_LEVEL=Warn
ENV BYTEHIDE_CONSOLE_ENABLED=false
ENV BYTEHIDE_LOG_PATH=logs/production.log

Docker 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/logs

Kubernetes 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"

Secret for Token

YAML
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-secrets

Environment-Specific Examples

Development

Bash
export BYTEHIDE_LOG_LEVEL=Debug
export BYTEHIDE_CONSOLE_ENABLED=true
export BYTEHIDE_LOG_PATH=logs/debug.log

Staging

Bash
export BYTEHIDE_LOGS_TOKEN=staging-token-here
export BYTEHIDE_LOG_LEVEL=Info
export BYTEHIDE_CONSOLE_ENABLED=false
export BYTEHIDE_LOG_PATH=logs/staging.log

Production

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=10000

Best 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

Next Steps

Previous
File Logging