SDKs
Python
Configuration

Configuration

Customize SDK behavior with configuration options.

All Options

from statly_observe import Statly
 
Statly.init(
    # Required
    dsn='https://[email protected]/your-org',
 
    # Optional
    environment='production',      # Environment name
    release='1.2.3',              # App version
    debug=False,                   # Enable debug logging
    sample_rate=1.0,              # 0.0-1.0, event sampling
    max_breadcrumbs=100,          # Max breadcrumbs stored
    before_send=my_callback,      # Modify/filter events
    transport=None,               # Custom transport
)

Option Reference

dsn

Required. Your Data Source Name containing API key and organization.

dsn='https://[email protected]/acme'

Format: https://<api-key>@statly.live/<org-slug>

environment

Environment name for filtering events in the dashboard.

environment='production'  # or 'staging', 'development'

release

Your application version. Used for release tracking.

release='1.2.3'  # or commit hash

debug

Enable verbose logging for troubleshooting.

debug=True

Logs SDK initialization, event capture, and transport activity.

sample_rate

Probability that an event will be sent (0.0 to 1.0).

sample_rate=0.5  # Send 50% of events

max_breadcrumbs

Maximum number of breadcrumbs to store per event.

max_breadcrumbs=50  # Default: 100

before_send

Callback to modify or drop events before sending.

def before_send(event):
    # Drop events from test users
    if event.get('user', {}).get('email', '').endswith('@test.com'):
        return None
 
    # Remove sensitive data
    if 'extra' in event and 'password' in event['extra']:
        del event['extra']['password']
 
    return event
 
Statly.init(
    dsn='...',
    before_send=before_send,
)

Return None to drop the event entirely.

transport

Custom transport for sending events. The default transport handles batching, retries, and error handling automatically. Custom transports are typically only needed for advanced use cases like custom proxy configurations.

Runtime Configuration

Some settings can be changed after initialization:

from statly_observe import Statly
 
Statly.init(dsn='...')
 
# Set user context
Statly.set_user(
    id='user_123',
    email='[email protected]',
)
 
# Add tags
Statly.set_tag('feature', 'checkout')
Statly.set_tags({
    'region': 'us-east',
    'plan': 'enterprise',
})

Environment Variables

Common pattern for configuration:

import os
from statly_observe import Statly
 
Statly.init(
    dsn=os.environ['STATLY_DSN'],
    environment=os.environ.get('ENVIRONMENT', 'development'),
    release=os.environ.get('GIT_SHA'),
    debug=os.environ.get('DEBUG', '').lower() == 'true',
)

Logging Integration

Capture Python logging as breadcrumbs:

import logging
from statly_observe import Statly
 
Statly.init(dsn='...')
 
# Python logs become breadcrumbs
logging.info('User logged in')
logging.warning('Slow database query')
 
try:
    risky_operation()
except Exception as e:
    # Captured event includes logging breadcrumbs
    Statly.capture_exception(e)