Skip to main content

vibex.sh Python SDK - Fail-safe logging handler for vibex.sh

Project description

vibex.sh Python SDK

Fail-safe logging handler for sending logs to vibex.sh.

Features

  • Fail-Safe: Silently disables if configuration is missing or invalid
  • Kill Switch: Permanently disables on 401/403 errors (expired/invalid tokens)
  • Easy Integration: Drop-in Python logging handler
  • Zero Dependencies (except requests)

Installation

pip install vibex_sh

Authentication

Before using the SDK, you need to get your authentication token. Run this command in your terminal:

npx vibex-sh login

This will generate your VIBEX_TOKEN that you'll use in the environment variables below.

Quick Start

  1. Set environment variables:
export VIBEX_TOKEN=vb_live_your_token_here
export VIBEX_SESSION_ID=my-production-app
  1. Use in your Python application:
import logging
import json
from vibex_sh import VibexHandler

# Get your logger
logger = logging.getLogger('my_app')

# Add Vibex handler
vibex_handler = VibexHandler()
logger.addHandler(vibex_handler)

# Send JSON logs (only JSON logs are sent to Vibex)
logger.info(json.dumps({'cpu': 45, 'memory': 78, 'status': 'healthy'}))
logger.info(json.dumps({'error': 'connection_failed', 'retry_count': 3}))

Configuration

The SDK reads configuration from environment variables:

  • VIBEX_TOKEN (required): Your Vibex API token
  • VIBEX_SESSION_ID (required): Your session ID

Fail-Safe Behavior

The SDK is designed to be fail-safe:

  1. Missing Config: If VIBEX_TOKEN or VIBEX_SESSION_ID is missing, the handler silently disables itself
  2. Invalid Token: On 401/403 responses, the handler permanently disables for the process lifetime
  3. Network Errors: All network errors are silently handled - your application continues normally
  4. Rate Limits: On 429 (rate limit), logs are dropped but the handler remains enabled. Logs are still written to console by default (passthrough_console=True)

Console Passthrough Options

By default, logs are forwarded to Vibex and also written to stderr (console), ensuring you can always see your logs locally while they're sent to Vibex.

passthrough_console (default: True)

When enabled (default), logs are always written to stderr in addition to being sent to Vibex. This provides visibility into your logs while forwarding them to Vibex.

# Default behavior - logs written to console and sent to Vibex
vibex_handler = VibexHandler()  # passthrough_console=True by default
logger.addHandler(vibex_handler)

# To disable console output (logs only sent to Vibex)
vibex_handler = VibexHandler(passthrough_console=False)
logger.addHandler(vibex_handler)

Note: To avoid duplicate log output when using passthrough_console=True, either:

  • Avoid using logging.basicConfig() which adds a default StreamHandler, or
  • Configure your logger to not propagate: logger.propagate = False

passthrough_on_failure (default: False)

When enabled, logs are written to stderr when sending to Vibex fails (rate limits, network errors, etc.). This is useful as an additional safety net, but with passthrough_console=True by default, it's typically not needed.

# Write logs to console only when sending fails
vibex_handler = VibexHandler(passthrough_console=False, passthrough_on_failure=True)
logger.addHandler(vibex_handler)

Important: Non-JSON logs are still discarded (only JSON-formatted logs are processed).

Important: JSON-Only Logging

Only JSON-formatted logs are sent to Vibex. Non-JSON logs are automatically discarded. Always stringify your log data:

import json

# ✅ Good - JSON logs are sent
logger.info(json.dumps({'cpu': 45, 'memory': 78}))

# ❌ Bad - Non-JSON logs are discarded
logger.info('Application started')
logger.info('High memory usage: 85%')

Advanced Usage

Direct Client Usage

from vibex_sh import VibexClient, VibexConfig

config = VibexConfig()
client = VibexClient(config)

# Send custom log
client.send_log('json', {'cpu': 45, 'memory': 78})

Check if Enabled

handler = VibexHandler()
if handler.is_enabled():
    print('Vibex is active')
else:
    print('Vibex is disabled (missing config or expired token)')

Verbose Mode

Enable verbose mode to see status messages when the handler initializes or encounters errors:

vibex_handler = VibexHandler(verbose=True)
logger.addHandler(vibex_handler)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibex_sh-0.10.0.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibex_sh-0.10.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file vibex_sh-0.10.0.tar.gz.

File metadata

  • Download URL: vibex_sh-0.10.0.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for vibex_sh-0.10.0.tar.gz
Algorithm Hash digest
SHA256 1557b2218ea635f9abba9f21bc79255289f21c16e6d05d9acbdc21222156f457
MD5 56cbcb3487f7d7589aad900db1156bb5
BLAKE2b-256 10412d24984bd3611958546b3d03d5c548c800eedc533f32b7602ce96c532964

See more details on using hashes here.

File details

Details for the file vibex_sh-0.10.0-py3-none-any.whl.

File metadata

  • Download URL: vibex_sh-0.10.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for vibex_sh-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6fcf580640c87edeba45bfa1a8e083f10344b8afe8407a138aa2fd9385b297e9
MD5 812daef64a39327fc71b067d555ad243
BLAKE2b-256 52407fa7324f6b7bdb0a92145fad4fd982913d7d52e6abb7b01ac437f59711fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page