1.0.1 • Published 9 months ago

@rfx-exchange/datadog-logger v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

@rfx-exchange/winston-datadog-transport

A Winston transport for sending logs to Datadog using the official Datadog API client. This transport allows you to send logs directly to Datadog without requiring the Datadog Agent.

Installation

NPM:

npm install @rfx-exchange/winston-datadog-transport

Yarn:

yarn add @rfx-exchange/winston-datadog-transport

Usage

Basic usage with Winston:

import winston from 'winston';
import { DatadogTransport } from '@rfx-exchange/winston-datadog-transport';

// Custom format
const customFormat = winston.format.printf(({ level, message, timestamp, ...metadata }) => {
  let msg = `${timestamp} [${level}] : ${message}`;
  if (Object.keys(metadata).length > 0) {
    msg += ` ${JSON.stringify(metadata)}`;
  }
  return msg;
});

const logger = winston.createLogger({
  level: 'info', // Minimum log level
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json(),
    customFormat
  ),
  transports: [
    new DatadogTransport({
      apiKey: process.env.DD_API_KEY!,
      service: 'my-service',
      hostname: process.env.HOSTNAME || 'default-host',
      defaultTags: {
        environment: process.env.NODE_ENV
      }
    })
  ]
});

// Error logging
logger.error('Operation failed', {
  tags: {
    operation: 'payment'
  },
  error: new Error('Payment declined'),
  transactionId: 'tx_123'
});

// Info logging
logger.info('User action', {
  tags: {
    userId: '123',
    action: 'login'
  }
});

// Debug logging
logger.debug('Processing request', {
  tags: {
    requestId: 'req_456',
    path: '/api/users'
  },
  payload: { userId: '123' }
});

Configuration Options

interface DatadogTransportOptions {
  apiKey: string;          // Your Datadog API key
  service: string;         // Name of your service
  hostname: string;        // Host identifier
  site?: DatadogSite;     // Datadog site (default: 'us5.datadoghq.com')
  tags?: string; // Default tags for all logs
}

Available Datadog Sites

enum DatadogSite {
  US = 'datadoghq.com',
  EU = 'datadoghq.eu',
  US3_FED = 'us3.datadoghq.com',
  US5_COMMERCIAL = 'us5.datadoghq.com',
  AP1 = 'ap1.datadoghq.com'
}

Environment Variables

Recommended environment variables to set:

DD_API_KEY=your_api_key
NODE_ENV=production
HOSTNAME=your-host-name