winston-documentdb
v1.1.2
Published
DocumentDB transport for the winston logging utility
Downloads
8
Readme
Installation
npm install --save winston-documentdb
Peer dependencies
npm install --save winston documentdb
Usage
TypeScript
import { DocumentClient } from 'documentdb';
import { DocumentDbTransport } from 'winston-documentdb';
import winston = require('winston');
// winston typedefs are hostile to extensions, so downtype DocumentDbTransport to any
winston.add(DocumentDbTransport as any, {
client: new DocumentClient(/* params */),
databaseName: 'yourDatabase',
collectionName: 'yourCollection',
});
winston.info('hello world', {foo:['bar', 123]});
JavaScript
const ddb = require('documentdb');
const winston = require('winston');
require('winston-documentdb');
winston.add(winston.DocumentDb, {
client: new ddb.DocumentClient(/* params */),
databaseName: 'yourDatabase',
collectionName: 'yourCollection',
});
winston.info('hello world', {foo:['bar', 123]});
Buffer objects inside meta
By default, any Buffer
object found on a log event's meta
object will not be serialized on the document. Instead, the buffer is stored as a reference, viewable as {"$media": "id"}
. The buffer contents are stored as a media attachment for the document. Modify DocumentDbTransportOptions.attachMedia
to change this behavior.
Concurrency
By default, logs are stored one-at-a-time in order to reserve network IO for core application resources. Modify DocumentDbTransportOptions.concurrency
to change this behavior.
API
DocumentDbTransport
/** constructor **/
const ddb = new DocumentDbTransport(documentDbTransportOptions);
/** methods **/
// Log an event
ddb.log(level, message, meta, callback);
/** events **/
// Fired for any Buffer object found in a log's meta object
ddb.on('media', (media) => {
const id = media.id; // string (md5 of Buffer)
const data = media.data; // Buffer
media.id = myHash(data); // optionally reassign the id
});
DocumentDbTransportOptions
{
/** DocumentDb database name (created if it does not exist) */
databaseName: string;
/** DocumentDb collection name (created if it does not exist) */
collectionName: string;
/** Max simultaneous writes to DocumentDb (default: 1) */
concurrency?: number;
/** Replace any Buffer object in event meta object with a hash of the buffer (default: true) */
attachMedia?: boolean;
/** Collection throughput for created collections (default: 10000) */
collectionThroughput?: number;
/** Default time-to-live for created collections */
defaultTtl?: number;
/** Partition key to use, if the collection is partitioned */
partitionKey?: string;
}