1.0.1 • Published 9 months ago
@rfx-exchange/datadog-logger v1.0.1
@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-transportYarn:
yarn add @rfx-exchange/winston-datadog-transportUsage
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