From 7f72ab7f14ae08137f727fc7006e71c582d44f6d Mon Sep 17 00:00:00 2001 From: Juan Tejada Date: Wed, 13 Jul 2016 11:58:46 -0700 Subject: [PATCH] Add loggly logging service to test it out - Adds env to all logs, cleans up code a bit --- package.json | 1 + packages/nylas-core/log-streams.js | 57 ++++++++++++++++++++++++++++++ packages/nylas-core/logger.js | 36 ++----------------- 3 files changed, 60 insertions(+), 34 deletions(-) create mode 100644 packages/nylas-core/log-streams.js diff --git a/package.json b/package.json index a6cdce36b..e2dcb9481 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "bluebird": "3.x.x", "bunyan": "1.8.0", "bunyan-cloudwatch": "2.0.0", + "bunyan-loggly": "^1.0.0", "bunyan-prettystream": "^0.1.3", "lerna": "2.0.0-beta.23", "mysql": "^2.11.1", diff --git a/packages/nylas-core/log-streams.js b/packages/nylas-core/log-streams.js new file mode 100644 index 000000000..fdd5746b5 --- /dev/null +++ b/packages/nylas-core/log-streams.js @@ -0,0 +1,57 @@ +const os = require('os'); +const createCWStream = require('bunyan-cloudwatch') +const PrettyStream = require('bunyan-prettystream') +const Bunyan2Loggly = require('bunyan-loggly') + +const {LOGGLY_TOKEN} = process.env +const logglyConfig = (name, env) => ({ + token: LOGGLY_TOKEN, + subdomain: 'nylas', + tags: [`${name}-${env}`], +}) +const cloudwatchConfig = (name, env) => ({ + logGroupName: `k2-${env}`, + logStreamName: `${name}-${env}-${os.hostname()}`, + cloudWatchLogsOptions: { + region: 'us-east-1', + }, +}) + +const stdoutStream = { + level: 'info', + stream: process.stdout, +} + +const getLogStreams = (name, env) => { + switch (env) { + case 'development': { + const prettyStdOut = new PrettyStream(); + prettyStdOut.pipe(process.stdout); + return [ + { + type: 'raw', + level: 'debug', + stream: prettyStdOut, + reemitErrorEvents: true, + }, + ] + } + default: { + return [ + stdoutStream, + { + type: 'raw', + reemitErrorEvents: true, + stream: new Bunyan2Loggly(logglyConfig(name, env)), + }, + { + type: 'raw', + reemitErrorEvents: true, + stream: createCWStream(cloudwatchConfig(name, env)), + }, + ] + } + } +} + +module.exports = {getLogStreams} diff --git a/packages/nylas-core/logger.js b/packages/nylas-core/logger.js index b77ba2c29..b50e704f9 100644 --- a/packages/nylas-core/logger.js +++ b/packages/nylas-core/logger.js @@ -1,44 +1,12 @@ -const os = require('os'); const bunyan = require('bunyan') -const createCWStream = require('bunyan-cloudwatch') -const PrettyStream = require('bunyan-prettystream'); +const {getLogStreams} = require('./log-streams') const NODE_ENV = process.env.NODE_ENV || 'unknown' - -function getLogStreams(name, env) { - if (env === 'development') { - const prettyStdOut = new PrettyStream(); - prettyStdOut.pipe(process.stdout); - const stdoutStream = { - type: 'raw', - level: 'debug', - stream: prettyStdOut, - } - return [stdoutStream] - } - - const stdoutStream = { - stream: process.stdout, - level: 'info', - } - const cloudwatchStream = { - stream: createCWStream({ - logGroupName: `k2-${env}`, - logStreamName: `${name}-${env}-${os.hostname()}`, - cloudWatchLogsOptions: { - region: 'us-east-1', - }, - }), - type: 'raw', - reemitErrorEvents: true, - } - return [stdoutStream, cloudwatchStream] -} - function createLogger(name, env = NODE_ENV) { const childLogs = new Map() const logger = bunyan.createLogger({ name, + env, serializers: bunyan.stdSerializers, streams: getLogStreams(name, env), })