Project Token
Project Token
Your project token is the authentication credential that connects your Python application to your ByteHide Logs project.
Getting Your Token
- Log in to the ByteHide Dashboard
- Navigate to your Logs project
- Go to Settings → Project Token
- Copy your token (starts with
bh_prefix)
Setting the Project Token
Direct Configuration
Set the token directly in your code:
from bytehide_logs import Log
Log.set_project_token("bh_your_project_token_here")from bytehide_logs import Log
Log.set_project_token("bh_your_project_token_here")Note: This approach should only be used in development. For production, use environment variables.
Environment Variables
ByteHide Logs checks two environment variables in order:
PROJECT_TOKEN- Custom environment variableBYTEHIDE_PROJECT_TOKEN- Standard ByteHide variable
# Using PROJECT_TOKEN
export PROJECT_TOKEN="bh_your_token"
# Or using BYTEHIDE_PROJECT_TOKEN
export BYTEHIDE_PROJECT_TOKEN="bh_your_token"
# Run your application
python app.py# Using PROJECT_TOKEN
export PROJECT_TOKEN="bh_your_token"
# Or using BYTEHIDE_PROJECT_TOKEN
export BYTEHIDE_PROJECT_TOKEN="bh_your_token"
# Run your application
python app.pyYour application code:
from bytehide_logs import Log, LogSettings
# Token will be automatically loaded from environment
Log.initialize(LogSettings(console_enabled=True))from bytehide_logs import Log, LogSettings
# Token will be automatically loaded from environment
Log.initialize(LogSettings(console_enabled=True))In Python Code
Read the token from environment if set:
import os
from bytehide_logs import Log, LogSettings
token = os.getenv("PROJECT_TOKEN") or os.getenv("BYTEHIDE_PROJECT_TOKEN")
if not token:
raise ValueError("Project token not found in environment variables")
Log.set_project_token(token)
Log.initialize(LogSettings(console_enabled=True))import os
from bytehide_logs import Log, LogSettings
token = os.getenv("PROJECT_TOKEN") or os.getenv("BYTEHIDE_PROJECT_TOKEN")
if not token:
raise ValueError("Project token not found in environment variables")
Log.set_project_token(token)
Log.initialize(LogSettings(console_enabled=True))Security Best Practices
Never Hardcode Tokens
Avoid committing tokens to version control:
# Bad - Never do this
Log.set_project_token("bh_abc123def456")
# Good - Use environment variables
Log.set_project_token(os.getenv("PROJECT_TOKEN"))# Bad - Never do this
Log.set_project_token("bh_abc123def456")
# Good - Use environment variables
Log.set_project_token(os.getenv("PROJECT_TOKEN"))Use .env Files in Development
Create a .env file locally (never commit it):
# .env
PROJECT_TOKEN=bh_your_development_token
# .gitignore
.env# .env
PROJECT_TOKEN=bh_your_development_token
# .gitignore
.envLoad it in your development environment:
source .env
python app.pysource .env
python app.pyEnvironment-Specific Tokens
Use different tokens for different environments:
import os
def get_project_token():
"""Get appropriate token based on environment"""
env = os.getenv("ENV", "development")
if env == "production":
return os.getenv("PRODUCTION_TOKEN")
elif env == "staging":
return os.getenv("STAGING_TOKEN")
else:
return os.getenv("DEVELOPMENT_TOKEN")
Log.set_project_token(get_project_token())import os
def get_project_token():
"""Get appropriate token based on environment"""
env = os.getenv("ENV", "development")
if env == "production":
return os.getenv("PRODUCTION_TOKEN")
elif env == "staging":
return os.getenv("STAGING_TOKEN")
else:
return os.getenv("DEVELOPMENT_TOKEN")
Log.set_project_token(get_project_token())Rotate Tokens Regularly
Periodically rotate your project tokens for security:
- Generate a new token in the ByteHide Dashboard
- Update all applications with the new token
- Verify the new token is working
- Revoke the old token
Docker Configuration
Pass the token as an environment variable to your container:
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]Run with token:
docker run -e PROJECT_TOKEN="bh_your_token" myappdocker run -e PROJECT_TOKEN="bh_your_token" myappOr in docker-compose.yml:
version: '3'
services:
app:
build: .
environment:
- PROJECT_TOKEN=${PROJECT_TOKEN}version: '3'
services:
app:
build: .
environment:
- PROJECT_TOKEN=${PROJECT_TOKEN}Run with:
PROJECT_TOKEN="bh_your_token" docker-compose upPROJECT_TOKEN="bh_your_token" docker-compose upKubernetes Configuration
Store the token in a Kubernetes Secret:
kubectl create secret generic bytehide-secret --from-literal=project-token=bh_your_tokenkubectl create secret generic bytehide-secret --from-literal=project-token=bh_your_tokenReference in your deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: app
image: myapp:latest
env:
- name: PROJECT_TOKEN
valueFrom:
secretKeyRef:
name: bytehide-secret
key: project-tokenapiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: app
image: myapp:latest
env:
- name: PROJECT_TOKEN
valueFrom:
secretKeyRef:
name: bytehide-secret
key: project-tokenToken Validation
Verify your token is correctly set and working:
from bytehide_logs import Log, LogSettings
try:
Log.set_project_token("bh_your_token")
settings = LogSettings(console_enabled=True)
Log.initialize(settings)
Log.info("Token validation successful")
except Exception as e:
print(f"Token validation failed: {e}")from bytehide_logs import Log, LogSettings
try:
Log.set_project_token("bh_your_token")
settings = LogSettings(console_enabled=True)
Log.initialize(settings)
Log.info("Token validation successful")
except Exception as e:
print(f"Token validation failed: {e}")Troubleshooting
"Invalid project token"
- Verify the token is copied correctly from the dashboard
- Ensure the token format matches (should start with
bh_) - Check that the project hasn't been deleted
Token not loading from environment
import os
print(f"PROJECT_TOKEN: {os.getenv('PROJECT_TOKEN')}")
print(f"BYTEHIDE_PROJECT_TOKEN: {os.getenv('BYTEHIDE_PROJECT_TOKEN')}")import os
print(f"PROJECT_TOKEN: {os.getenv('PROJECT_TOKEN')}")
print(f"BYTEHIDE_PROJECT_TOKEN: {os.getenv('BYTEHIDE_PROJECT_TOKEN')}")Multiple environments
Use configuration files or separate settings by environment:
import os
from pathlib import Path
def load_config():
env = os.getenv("ENV", "development")
config_file = Path(f"config.{env}.py")
if config_file.exists():
exec(config_file.read_text())
return PROJECT_TOKENimport os
from pathlib import Path
def load_config():
env = os.getenv("ENV", "development")
config_file = Path(f"config.{env}.py")
if config_file.exists():
exec(config_file.read_text())
return PROJECT_TOKENNext Steps
- Quick Start - Initialize logging
- Configuration - Configure all settings
- Environment Variables - Learn about all env vars