Skip to content

Commit

Permalink
add leveled logging
Browse files Browse the repository at this point in the history
  • Loading branch information
jakewmeyer committed Apr 28, 2020
1 parent 62a5cab commit 7fa96f6
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 15 deletions.
26 changes: 16 additions & 10 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
const cors = require('koa2-cors');
const helmet = require('koa-helmet');
const Koa = require('koa');
const logger = require('koa-pino-logger');
const bodyParser = require('koa-bodyparser');
const mongoose = require('mongoose');
const { requestLogger, logger } = require('./middleware/logger');
const { responseTime, cache } = require('./middleware');
const { v4 } = require('./services');

Expand All @@ -16,14 +16,22 @@ mongoose.connect(process.env.SPACEX_MONGO, {
useUnifiedTopology: true,
useCreateIndex: true,
});

const db = mongoose.connection;

db.on('error', (err) => {
console.error(err);
logger.error(err);
});
db.once('open', () => {
console.log('Mongo ready');
db.once('connected', () => {
logger.info('Mongo connected');
app.emit('ready');
});
db.on('reconnected', () => {
logger.info('Mongo re-connected');
});
db.on('disconnected', () => {
logger.info('Mongo disconnected');
});

// disable console.errors for pino
app.silent = true;
Expand All @@ -44,14 +52,12 @@ app.use(cors({
// Set header with API response time
app.use(responseTime);

// Only use Redis + minified logs in prodcution
// Request logging
app.use(requestLogger);

// Only use Redis in production
if (process.env.NODE_ENV === 'production') {
app.use(cache.middleware());
app.use(logger());
} else {
app.use(logger({
prettyPrint: true,
}));
}

// V4 routes
Expand Down
8 changes: 6 additions & 2 deletions middleware/cache.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

const Redis = require('ioredis');
const crypto = require('crypto');
const { logger } = require('./logger');

let redis;
let redisAvailable = false;
Expand All @@ -17,9 +18,12 @@ redis.on('error', () => {
redis.on('end', () => {
redisAvailable = false;
});
redis.on('connect', () => {
redis.on('ready', () => {
redisAvailable = true;
console.log('Redis ready');
logger.info('Redis connected');
});
redis.on('reconnecting', () => {
logger.info('Redis re-connecting');
});

/**
Expand Down
1 change: 1 addition & 0 deletions middleware/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
module.exports.auth = require('./auth');
module.exports.cache = require('./cache');
module.exports.responseTime = require('./response-time');
module.exports.logger = require('./logger');
21 changes: 21 additions & 0 deletions middleware/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

const koaPino = require('koa-pino-logger');
const pino = require('pino');

const devOpts = {
prettyPrint: true,
};

let requestLog;
let logger;

if (process.env.NODE_ENV === 'production') {
requestLog = koaPino();
logger = pino();
} else {
requestLog = koaPino(devOpts);
logger = pino(devOpts);
}

module.exports.requestLogger = requestLog;
module.exports.logger = logger;
7 changes: 4 additions & 3 deletions server.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

const http = require('http');
const mongoose = require('mongoose');
const { logger } = require('./middleware/logger');
const app = require('./app');

const PORT = process.env.PORT || 6673;
Expand All @@ -9,16 +10,16 @@ const SERVER = http.createServer(app.callback());
// Gracefully close Mongo connection
const gracefulShutdown = () => {
mongoose.connection.close(false, () => {
console.log('Mongo closed');
logger.info('Mongo closed');
SERVER.close(() => {
console.log('Shutting down...');
logger.info('Shutting down...');
});
});
};

// Server start
SERVER.listen(PORT, '0.0.0.0', () => {
console.log(`Running on port: ${PORT}`);
logger.info(`Running on port: ${PORT}`);

// Handle kill commands
process.on('SIGTERM', gracefulShutdown);
Expand Down

0 comments on commit 7fa96f6

Please sign in to comment.