1.4.1 • Published 11 days ago

osnmarket-xpress-logger v1.4.1

Weekly downloads
-
License
MIT
Repository
-
Last release
11 days ago

Xpress Logger

Simple logger for logging applications with the ability to replace sensitive data in logs.

Installation

You can install the osnmarket-xpress-logger package via npm:

yarn add osnmarket-xpress-logger@latest

Or with npm

npm install osnmarket-xpress-logger@latest

Usage

import express from 'express';
import { writeLog } from 'osnmarket-xpress-logger';

const app = express();

app.use((req, res, next) => {
  // Log request details
  writeLog({
    crypt: ['client_id', 'client_secret'], // Specify sensitive keys to replace
    appName: 'your-app-name',
    req,
    res,
    manualLog: { // this overrides the default req, res logging keys retrieval to specify your own
      logFrom: req.ip,
      userIp: req?.socket?.remoteAddress,
      method: req.method,
      payload: JSON.stringify(req.body),
      headers: JSON.stringify(req.headers),
      logTarget: req.originalUrl,
      userAgent: req.headers['user-agent'],
      logStatus: res.statusCode,
      logStatusCode: res?.statusMessage?.toUpperCase(),
    },
    logLevel: 'INFO', // default log level
    action: 'INCOMING REQUEST'
    logConsole: false // it displays logs directly on console instead of writing it on file
    constantFileName: false // is at default false but can be set to true if you want the same file name all the time
  });
  next();
});

// Your Express app routes...

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Which something like this

{ "log.level":"info", "@timestamp": "2024-03-05T09:59:41.230Z", "event.type": "AUDIT", "client.ip": "::1", "source.name": "::1", "user.name": "anonymousUser", "event.category": "INFO", "event.action": "INCOMING REQUEST", "http.request.method": "POST", "http.request.body.content": "{\"client_id\":\"***************\",\"client_secret\":\"***************\"}", "http.request.headers": "{\"content-type\":\"application/json\",\"user-agent\":\"PostmanRuntime/7.36.3\",\"accept\":\"*/*\",\"postman-token\":\"2596c2e1-23a1-4f67-af20-a8e406dde134\",\"host\":\"localhost:3000\",\"accept-encoding\":\"gzip, deflate, br\",\"connection\":\"keep-alive\",\"content-length\":\"98\"}", "url.path": "/auth/v1/token", "user_agent.original": "PostmanRuntime/7.36.3", "process.thread.id": 47575, "http.response.status": "OK", "http.response.status_code": 200 }

When in dev enviroment the logs format change to this

log.level:info|@timestamp:2024-03-05T10:01:24.432Z|event.type:AUDIT|client.ip:::1|source.name:::1|user.name:anonymousUser|event.category:INFO|event.action:INCOMING REQUEST|http.request.method:POST|http.request.body.content:"{\"client_id\":\"***************\",\"client_secret\":\"***************\"}"|http.request.headers:"{\"content-type\":\"application/json\",\"user-agent\":\"PostmanRuntime/7.36.3\",\"accept\":\"*/*\",\"postman-token\":\"c1e0ac21-61f0-4258-9142-34e8c677d24f\",\"host\":\"localhost:3000\",\"accept-encoding\":\"gzip, deflate, br\",\"connection\":\"keep-alive\",\"content-length\":\"98\"}"|url.path:/auth/v1/token|user_agent.original:PostmanRuntime/7.36.3|process.thread.id:48111|http.response.status:OK|http.response.status_code:200

Options

  • crypt: An array of sensitive keys to replace their values with asterisks in logs.
  • appName: Name of your application.
  • req: Entry req entity.
  • res: Outgoing res entity.
  • manualLog: Your own keys entity.
    • logFrom: IP address of the requester.
    • userIp: IP address of the user.
    • method: HTTP method.
    • payload: Request body payload.
    • headers: Request headers.
    • logTarget: Requested URL.
    • userAgent: User agent.
    • logStatus: HTTP response status code.
    • logStatusCode: HTTP response status message.
  • logLevel: Log level.
  • action: Action being logged.
  • logConsole: Displays logs directly on console instead of writing it on file.
  • constantFileName: Keeps the same filename all the time.
1.3.7

12 days ago

1.4.1

11 days ago

1.4.0

11 days ago

1.3.9

11 days ago

1.3.8

12 days ago

1.3.6

17 days ago

1.3.5

17 days ago

1.3.4

17 days ago

1.3.3

1 month ago

1.3.2

2 months ago

1.3.1

2 months ago

1.2.3

2 months ago

1.2.2

2 months ago

1.3.0

2 months ago

1.2.0

2 months ago

1.2.1

2 months ago

1.0.3

3 months ago

1.0.2

4 months ago

1.0.1

4 months ago

1.0.0

4 months ago