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
Java
// Automatically reads from environment variables
Log.setProject();// Automatically reads from environment variables
Log.setProject();Or read manually:
Java
String projectToken = System.getenv("BYTEHIDE_LOGS_TOKEN");
Log.setProjectToken(projectToken);String projectToken = System.getenv("BYTEHIDE_LOGS_TOKEN");
Log.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=InfoJava
String logLevelStr = System.getenv("BYTEHIDE_LOG_LEVEL");
if (logLevelStr != null) {
LogLevel level = LogLevel.valueOf(logLevelStr.toUpperCase());
Log.setMinimumLevel(level);
}String logLevelStr = System.getenv("BYTEHIDE_LOG_LEVEL");
if (logLevelStr != null) {
LogLevel level = LogLevel.valueOf(logLevelStr.toUpperCase());
Log.setMinimumLevel(level);
}File Path
Bash
export BYTEHIDE_LOG_PATH=logs/application.logexport BYTEHIDE_LOG_PATH=logs/application.logJava
String logPath = System.getenv("BYTEHIDE_LOG_PATH");
if (logPath != null) {
Log.setPersist(true);
Log.setFilePath(logPath);
}String logPath = System.getenv("BYTEHIDE_LOG_PATH");
if (logPath != null) {
Log.setPersist(true);
Log.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
Java
import com.bytehide.logs.core.Log;
import com.bytehide.logs.models.LogLevel;
import com.bytehide.logs.models.RollingInterval;
public class EnvironmentLoggerConfig {
public static void initialize() {
// Project token
Log.setProject();
// Log level
String logLevel = System.getenv("BYTEHIDE_LOG_LEVEL");
if (logLevel != null) {
Log.setMinimumLevel(LogLevel.valueOf(logLevel.toUpperCase()));
}
// Console
String consoleEnabled = System.getenv("BYTEHIDE_CONSOLE_ENABLED");
Log.setConsoleEnabled("true".equalsIgnoreCase(consoleEnabled));
// File logging
String logPath = System.getenv("BYTEHIDE_LOG_PATH");
if (logPath != null) {
Log.setPersist(true);
Log.setFilePath(logPath);
}
// Rolling interval
String rollingInterval = System.getenv("BYTEHIDE_ROLLING_INTERVAL");
if (rollingInterval != null) {
Log.setRollingInterval(RollingInterval.valueOf(rollingInterval.toUpperCase()));
}
// Duplicate suppression
String suppressionMs = System.getenv("BYTEHIDE_DUPLICATE_SUPPRESSION_MS");
if (suppressionMs != null) {
Log.setDuplicateSuppressionWindow(Long.parseLong(suppressionMs));
}
}
}import com.bytehide.logs.core.Log;
import com.bytehide.logs.models.LogLevel;
import com.bytehide.logs.models.RollingInterval;
public class EnvironmentLoggerConfig {
public static void initialize() {
// Project token
Log.setProject();
// Log level
String logLevel = System.getenv("BYTEHIDE_LOG_LEVEL");
if (logLevel != null) {
Log.setMinimumLevel(LogLevel.valueOf(logLevel.toUpperCase()));
}
// Console
String consoleEnabled = System.getenv("BYTEHIDE_CONSOLE_ENABLED");
Log.setConsoleEnabled("true".equalsIgnoreCase(consoleEnabled));
// File logging
String logPath = System.getenv("BYTEHIDE_LOG_PATH");
if (logPath != null) {
Log.setPersist(true);
Log.setFilePath(logPath);
}
// Rolling interval
String rollingInterval = System.getenv("BYTEHIDE_ROLLING_INTERVAL");
if (rollingInterval != null) {
Log.setRollingInterval(RollingInterval.valueOf(rollingInterval.toUpperCase()));
}
// Duplicate suppression
String suppressionMs = System.getenv("BYTEHIDE_DUPLICATE_SUPPRESSION_MS");
if (suppressionMs != null) {
Log.setDuplicateSuppressionWindow(Long.parseLong(suppressionMs));
}
}
}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