1.0.1 • Published 11 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