Skip to content

Bala-raj/gcp-nodejs-correlate-logs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

With Google's solution has limitation which let you use only wherever you have access to the request object - https://github.com/googleapis/nodejs-logging-bunyan

But with this you can log anywhere.

alt text

Step 1:

You need to enable in GCP and use in your application -> @google-cloud/trace-agent

Step 2:

This example shown below will push logs only when it is production or staging server.

For dev also using the bunyan logger but this way it saves a cost instead pushing unnecessary local logs to cloud.

Check and do needful for gcp-nodejs-correlate-logs

config/logger.js

import { LoggingBunyan } from '@google-cloud/logging-bunyan';
import createLogger from 'gcp-nodejs-correlate-logs';

import { getProjectId, ifDev } from './config';

// Creates a Bunyan Stackdriver Logging client
const loggingBunyan = new LoggingBunyan();

let loggerOption;

if (ifDev()) {
  const bunyanDebugStream = require('bunyan-debug-stream'); // eslint-disable-line
  loggerOption = {
    name: 'rocket-science',
    streams: [{
      level: 'info',
      type: 'raw',
      stream: bunyanDebugStream({
        forceColor: true,
      }),
    }],
    serializers: bunyanDebugStream.serializers,
  };
} else {
  loggerOption = {
    name: 'rocket-science',
    level: 'info',
    streams: [loggingBunyan.stream('info')],
  };
}


const { loggerContextMiddleware, log } = createLogger(getProjectId() || 'dev', loggerOption);

export { loggerContextMiddleware, log };

server.js

import express from 'express';

// Activate Google Cloud Trace before logging
if (ifLive() || ifStaging())
  require('@google-cloud/trace-agent').start(); 

import config, { APPLICATION_MODE } from './config/config';
import { loggerContextMiddleware, log } from './config/logger';

const app = express();

app.use(loggerContextMiddleware); // Should add this middleware for correlating the logs.

app.listen(config.PORT, () => log.info(`Server listening on port ${config.PORT}... Application Mode: ${APPLICATION_MODE}`));

Import the log and use it wherever you want.

api.js

import { Router }  from 'express';

import { log } from './config/logger';

const route = Router();

route.use('/', ( req, res) => { 
  log.info('Seems working');
  res.send('Hello!')
});

About

Helper module for nodejs applications to correlate logs in Google Cloud Platform

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors