GC-JSON-Logger-Express: A JSON Logger for Express.js

GC-JSON-Logger-Express

Logger for Structured Logging with Asynchronous Context Tracking (Stability: 2 - Stable) to log HTTP traffic in Express.JS in GKE


Installation

npm install --save gc-json-logger gc-json-logger-express

yarn add gc-json-logger gc-json-logger-express

View in Google Cloud Logging

Google Cloud Logging

Integration

const { Logger, Severity } = require('gc-json-logger');
const { log } = require('gc-json-logger-express');
const express = require('express');

const app = express();

/* Set desired application log level */
Logger.setLevel(Severity.DEBUG);

/* Filter sensitive data or transform log entry */
app.use(
  log((_req, _res, entry) => {
    const severity = entry.meta.httpRequest?.status >= 500 ? Severity.ERROR : entry.severity;
    return { ...entry, severity };
  })
);

app.use(express.text());
app.use(express.json());
app.use((req, res) => res.status(500).send(req.body));

app.listen(3000);

Mock Request

curl -X POST "http://localhost:3000/echo" \
  -H "Content-Type: text/plain" \
  -d 'Hello world!'

Logged Request

{
  "severity": "INFO",
  "timestamp": "2022-01-01T00:00:00.000Z",
  "message": "200 POST /echo",
  "httpRequest": {
    "protocol": "HTTP/1.1",
    "requestSize": "141",
    "remoteIp": "::ffff:127.0.0.1",
    "requestUrl": "http://localhost:3000/echo",
    "requestMethod": "POST",
    "userAgent": "curl/7.79.1",
    "serverIp": "::ffff:127.0.0.1:3000"
  },
  "logging.googleapis.com/operation": {
    "id": "Application"
  }
}

Logged Request and Response

{
  "severity": "ERROR",
  "timestamp": "2022-01-01T00:00:00.000Z",
  "message": "500 POST /echo (13ms)",
  "httpRequest": {
    "latency": "13ms",
    "responseSize": "258",
    "status": 500
  },
  "logging.googleapis.com/operation": {
    "id": "Application"
  },
  "meta": {
    "request": {
      "headers": {
        "host": "localhost:3000",
        "user-agent": "curl/7.79.1",
        "accept": "*/*",
        "content-type": "text/plain",
        "content-length": "12"
      },
      "body": "Hello world!"
    },
    "response": {
      "headers": {
        "x-powered-by": "Express",
        "content-type": "text/html; charset=utf-8",
        "content-length": "12",
        "etag": "W/\"c-00hq6RNueFa8QiEjhep5cJRHWAI\""
      },
      "body": "Hello world!"
    }
  }
}

Download Details:

Author: igrek8
Source Code: https://github.com/igrek8/gc-json-logger-express 
License: MIT license

#json #logger #express 

GC-JSON-Logger-Express: A JSON Logger for Express.js
1.55 GEEK