Intégration du transport Pino

Envoyez des logs structurés depuis vos applications Node.js directement vers Radianz

Aperçu

Qu'est-ce que le transport Pino ?

Le package @pgms/radianz-pino-transport est un transport Pino qui envoie les logs structurés directement vers la plateforme Radianz par HTTP. Il utilise le même endpoint d'ingestion que le sink Serilog, donc vos logs Node.js apparaissent aux côtés de vos logs .NET dans le même tableau de bord — aucun collecteur intermédiaire requis.

Comment ça fonctionne
Votre App Node.js
Transport Pino
Radianz
Mise en lots automatique par taille et intervalle de temps
Mapping automatique du format Pino vers Radianz
Réessai avec backoff exponentiel et jitter
Sérialisation des erreurs avec support de la chaîne de causes
File FIFO avec politique de rejet configurable
Arrêt gracieux avec flush
Pourquoi une intégration directe ?Contrairement à l'approche OpenTelemetry qui nécessite un Collecteur, ce transport envoie les logs directement depuis votre processus Node.js vers Radianz. Cela signifie zéro infrastructure à maintenir — installez simplement le package npm et configurez votre clé API. Idéal pour les fonctions serverless, les petits services ou toute application Node.js.

Installation

Installez le package npm depuis npmjs.com

Étape 1 — Installer le package

Installez le transport et Pino depuis npm. Node.js 18 ou plus récent est requis :

bash
npm install @pgms/radianz-pino-transport pino

Configuration

Configurez le transport avec vos identifiants Radianz

Utilisation de base

Créez un logger Pino avec le transport Radianz. Remplacez l'endpoint, clientId et apiKey par vos identifiants réels :

javascript
import pino from "pino";
import { radianzTransport } from "@pgms/radianz-pino-transport";

const logger = pino(
  { level: "info" },
  radianzTransport({
    endpoint: "https://your-radianz-instance/api/v1/logs/batch",
    clientId: "YOUR_CLIENT_ID",
    apiKey:   "YOUR_API_KEY",
    serviceName: "my-node-service",
  })
);

logger.info({ userId: "user-42" }, "User signed in");
logger.error(new Error("Something broke"), "Unhandled error");
Où trouver mes identifiants ?Allez dans Elmah > Log API Tokens dans le tableau de bord Radianz. Votre clientId est le Client ID de l'application et votre apiKey est le jeton API.
Console + Radianz (multistream)

Pour envoyer les logs à la fois vers la console et vers Radianz simultanément, utilisez le multistream intégré de Pino :

javascript
import pino from "pino";
import { multistream } from "pino";
import { radianzTransport } from "@pgms/radianz-pino-transport";

const radianz = radianzTransport({
  endpoint: process.env.RADIANZ_ENDPOINT,
  clientId: process.env.RADIANZ_CLIENT_ID,
  apiKey:   process.env.RADIANZ_API_KEY,
  serviceName: "my-service",
});

const logger = pino(
  { level: "trace" },
  multistream([
    { stream: process.stdout, level: "trace" },
    { stream: radianz,        level: "trace" },
  ])
);
Options de configuration
Option Type Par défaut Description
endpointstring—URL du endpoint batch Radianz (requis)
clientIdstring—Client ID pour l'authentification (requis)
apiKeystring—Clé API pour l'authentification (requis)
serviceNamestring""Nom du service ajouté à chaque entrée de log
batchSizenumber50Nombre de logs par lot avant l'envoi
flushIntervalMsnumber5000Temps maximum (ms) avant de vider le lot
maxRetriesnumber3Nombre maximum de tentatives en cas d'échec
maxQueueSizenumber10000Taille maximale de la file — les logs les plus anciens sont supprimés quand elle est pleine

Projet d'exemple

Essayez-le localement avec la démo incluse

Un projet d'exemple exécutable est inclus dans le dépôt. Il envoie des logs de test à tous les niveaux (trace à fatal) avec des données structurées, des erreurs et des chaînes de causes :

bash
cd sdk/js/radianz-pino-transport

# 1. Copy and fill in your credentials
cp sample/.env.example sample/.env
# Edit sample/.env with your endpoint, clientId, apiKey

# 2. Run the demo
npm run sample
Ce que la démo envoieLa démo émet 9 logs couvrant tous les niveaux Pino (trace → fatal), incluant des propriétés structurées, des erreurs de parsing JSON avec stack traces, et une erreur de base de données avec chaîne de causes. Vérifiez votre tableau de bord Radianz après l'exécution.