ZuploZuplo
LoginSign Up
  • Documentation
  • API Reference
Introduction
Getting Started
    Develop using the Portal
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth4 - Deploy5 - Dynamic Rate LimitingMCP - Quick start
    Develop Locally
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth
Concepts
Development
Policies
Handlers
API Keys
MCP Server
MCP Gateway
AI Gateway
Developer Portal
Monetization
Deploying & Source Control
Observability
    Logging
    Data & Security
      Akamai API SecurityAzure BlobAzure Event HubsHydrolix / Traffic Peak
    Metrics PluginsOpenTelemetryProactive monitoring
    Guides
Networking & Infrastructure
Account Management
Programming API
Build with AI
Zuplo CLI
Migration Guides
Platform LimitsSecuritySupportTrust & ComplianceChangelog
powered by Zudoku
Data & Security

Azure Blob Plugin

This plugin pushes request/response logs to Azure Blob Storage. This can be used to save request data generated by your API Gateway to use for monitoring, analytics, auditing, or debugging purposes.

Enterprise Feature

Custom logging is available as an add-on as part of an enterprise plan. If you would like to purchase this feature, please contact us at sales@zuplo.com or reach out to your account manager.

Most enterprise features can be used in a trial mode for a limited time. Feel free to use enterprise features for development and testing purposes.

Setup

You can define the fields created in the CSV by creating a custom type in TypeScript and a function to extract the field data from the Response, ZuploRequest, and ZuploContext.

The plugin is configured in the Runtime Extensions file zuplo.runtime.ts:

modules/zuplo.runtime.ts
// The interface that describes the rows // in the output interface AzureBlobLogEntry { timestamp: string; method: string; url: string; status: number; statusText: string; sub: string | null; contentLength: string | null; } // Add the plugin - use a SAS URL runtime.addPlugin( new AzureBlobPlugin<AzureBlobLogEntry>({ sasUrl: "https://YOUR_ACCOUNT.blob.core.windows.net/YOUR_CONTAINER?sv=2022-11-02&ss=b&srt=co&sp=wactfx&se=2045-11-17T13:50:53Z&st=2024-11-17T05:50:53Z&spr=https&sig=YOUR_SIG", batchPeriodSeconds: 1, generateLogEntry: ( response: Response, request: ZuploRequest, context: ZuploContext, ) => ({ // You can customize the log entry here by adding new fields timestamp: new Date().toISOString(), url: request.url, method: request.method, status: response.status, statusText: response.statusText, sub: request.user?.sub ?? null, contentLength: request.headers.get("content-length"), }), }), );

The plugin writes Block Blobs using SAS signatures. Ensure that your SAS URL has the correct structure and contains the container name, and the SAS has the appropriate permissions.

Writing the response or request

Writing the full request or response body can be expensive but is supported. Alternatively, you may want to parse the body for a particular property to log, in this case it's important that the request or response is cloned so that the stream is available for the response.

Also, note that the generateLogEntry function will be called after the request stream has been read. So if you need to read the request, you will need to store the cloned response before it reaches the request handler and store it, ideally using ContextData.

Edit this page
Last modified on August 8, 2025
Akamai API SecurityAzure Event Hubs
On this page
  • Setup
  • Writing the response or request
TypeScript