Madgex Datadog logger setup for node applications
Use to create console and/or Hapi Good loggers that will output logs (with log level) to DD agent
By Jim O'Neill
Uses the winston logging with a custom winston-tcp-transport
Usage
Require the package:-
const DatadogLogger = require('@madgex/datadog-logger');
To use global logger instance:-
DatadogLogger.Logger.info('Using global logger instance');
To create the console logger (note - sets global logger instance):-
//Set min output level (lower levels won't be logged)
let loggerOptions = { level: 'debug' };
if (process.env.NODE_ENV === 'production') {
//If not set - logs wil be output to console
loggerOptions.dataDog = {
//Note: myServicePortNo - you will need to ask systems which port your service should log to
port: myServicePortNo,
udp: true, //if false will use TCP
// hostIp: x.x.x.x -- use to override agent host - leave unset to discover current host on AWS
};
}
_logger = await DatadogLogger.createLogger(loggerOptions);
_logger.info('logger is setup');
//OR
DatadogLogger.Logger.info('logger is setup');
Example usages:-
_logger.error(err);
_logger.debug('info', infoObj);
_logger.trace('trace message');
To setup the good reporter for Hapi:-
const goodOptions = {
ops: {
interval: 1000,
},
reporters: {
//Note: use previously created logger
loggerReporter: [DatadogLogger.createGoodReporter(_logger, {
pathsToInclude: ['/v1']
})]
},
};
const server = Hapi.server(...)
await server.register([
...
{ plugin: Good, options: goodOptions }
]);
This module has custom levels equivalent to those used in nlog and serilog:-
const _loggingLevels = {
fatal: 0,
error: 1,
warn: 2,
info: 3,
debug: 4,
trace: 5
};