Use any OTel SDK or Collector to ship logs over OTLP/HTTP.
BunnyLogs exposes an OTLP/HTTP log endpoint compatible with any OpenTelemetry SDK or Collector. Point your exporter at the URL below — no API key is needed, the logspace UUID in the path authenticates the request.
POST https://bunnylogs.com/otlp/<uuid>/v1/logs
Content-Type: application/json
| OTel field | BunnyLogs field | Notes |
|---|---|---|
body.stringValue |
message |
The log message text. |
resource.attributes["service.name"] |
program |
Falls back to instrumentation scope name, then otlp. |
severityText / severityNumber |
level |
severityText is used when present; otherwise mapped from the numeric value. |
timeUnixNano |
timestamp |
Falls back to observedTimeUnixNano, then server time. |
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
import logging
from opentelemetry._logs import set_logger_provider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.sdk.resources import Resource
provider = LoggerProvider(
resource=Resource({"service.name": "my-app"})
)
provider.add_log_record_processor(
BatchLogRecordProcessor(
OTLPLogExporter(
endpoint="https://bunnylogs.com/otlp/<uuid>/v1/logs"
)
)
)
set_logger_provider(provider)
# Attach to the standard logging module
handler = LoggingHandler(level=logging.DEBUG, logger_provider=provider)
logging.getLogger().addHandler(handler)
# Now use logging as normal — logs are forwarded to BunnyLogs
logging.warning("something went wrong")
If you already run an OTel Collector, add BunnyLogs as an otlphttp exporter in your pipeline:
exporters:
otlphttp/bunnylogs:
endpoint: "https://bunnylogs.com/otlp/<uuid>"
service:
pipelines:
logs:
exporters: [otlphttp/bunnylogs]
npm install @opentelemetry/sdk-node @opentelemetry/exporter-logs-otlp-http
const { OTLPLogExporter } = require("@opentelemetry/exporter-logs-otlp-http");
const { LoggerProvider, BatchLogRecordProcessor } = require("@opentelemetry/sdk-logs");
const { Resource } = require("@opentelemetry/resources");
const provider = new LoggerProvider({
resource: new Resource({ "service.name": "my-app" }),
});
provider.addLogRecordProcessor(
new BatchLogRecordProcessor(
new OTLPLogExporter({
url: "https://bunnylogs.com/otlp/<uuid>/v1/logs",
})
)
);
const logger = provider.getLogger("my-app");
logger.emit({ severityText: "INFO", body: "server started" });