Socket
Socket
Sign inDemoInstall

@inderes/videosync-logger

Package Overview
Dependencies
49
Maintainers
3
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @inderes/videosync-logger

Shared package library to be used in our backend services, and possibly in the frontend also.


Version published
Weekly downloads
71
increased by12.7%
Maintainers
3
Created
Weekly downloads
 

Readme

Source

@inderes/videosync-logger

Shared package library to be used in our backend services, and possibly in the frontend also.

Bases on Pino https://getpino.io

Quick start

Create a new logger instance with proper configuration:

const logger = new Logger({ context: 'MySweetShadow' });

logger.info('Fueled, these new shores burn');

logger.info('Dark past lies cold', { lyrics: 'Shadow, my sweet shadow' });

const error = new Error('To you, I look no more...');
logger.error('The end', error);
[
  {
    "level": "info",
    "time": "2023-02-02T07:16:16.209Z",
    "context": "MySweetShadow",
    "message": "Fueled, these new shores burn"
  },
  {
    "level": "info",
    "time": "2023-02-02T07:16:16.209Z",
    "context": "MySweetShadow",
    "data": { "lyrics": "Shadow, my sweet shadow" },
    "message": "Dark past lies cold"
  },
  {
    "level": "error",
    "time": "2023-02-02T07:16:16.209Z",
    "context": "MySweetShadow",
    "data": {
      "error": {
        "type": "Error",
        "message": "To you, I look no more...",
        "stack": "Error: To you, I look no more...\n    at Object.<anonymous> (file:///Users/pitkane/code/inderes/videosync-monorepo/apps/videosync-api/src/index.ts:87:19)"
      }
    },
    "message": "The end"
  }
]

Logger options

name

Assign name for the logger. Name is printed on every log line. This helps to identify the source of the logging. In example API might have integration modules or classes, which can identify themselves by assigning name for the class.

const logger = new Logger({ name: 'HulabaloozaIntegration' });

prettyPrint

Default: false. Normally the output is JSON. Setting this true will change to output into string, and removes some other normally outputted information. Useful for local development.

requestId

const logger = new Logger({ requestId: uuid() });

Useful if you need to track the logs. Eg. in fastify/express server, start of the request you create a logger, set the tracindId, and assign the logger to request context. All of the processing and log outputs of the single request (request context) will include the same requestId. So with one id you will get the whole trace of the request from start to finish.

Fastify does this automatically. The example below is one GET request to /api/v1/examples, and it has the same requestId the whole way of the request.

{"level":"info","time":"2022-07-27T08:16:45.654Z","name":"MySweetShadow","requestId":"ifK-HtSbgf9ZjQkMnA7W7","requestId":{"method":"GET","url":"/api/v1/examples","hostname":"localhost:3001","remoteAddress":"127.0.0.1","remotePort":55547},"message":"incoming request"}
{"level":"info","time":"2022-07-27T08:16:45.718Z","name":"MySweetShadow","requestId":"ifK-HtSbgf9ZjQkMnA7W7","moro":"jorma","message":"just testing logging"}
{"level":"info","time":"2022-07-27T08:16:45.718Z","name":"MySweetShadow","requestId":"ifK-HtSbgf9ZjQkMnA7W7","res":{"statusCode":200},"responseTime":64.16495898365974,"message":"request completed"}

defaultData

Object which is spread into every log object/line.

const logger = new Logger({ defaultData: { some: 'data' } });
logger.info('Hello world');
{
  "level": "info",
  "time": "2022-07-27T08:19:49.428Z",
  "payload": {
    "some": "data"
  },
  "message": "Hello world"
}

redactFields

Removes wanted or sensitive fields from the output log object. For example we don't want to log out passwords, which are automatically redacted.

const logger = new Logger({ redactFields: ['secretString'] });
logger.info('secrets', { username: 'super', secretString: 'secret' });
{
  "level": "info",
  "time": "2022-07-27T08:22:11.868Z",
  "payload": {
    "username": "super",
    "secretString": "[Redacted]"
  }
}

Publishing to npm

When doing changes to the package, you need to publish the package to npm. This is done with changesets. Changesets are used to create a changelog, and to publish the package to npm.

Create a changeset

npx changeset

If will ask you a series of questions, and then it will create a changeset file. This file is used to create the changelog, and to publish the package to npm.

Publish the package

After the changeset file is created, you need to commit it to git. Then you can publish the package to npm.

To bump the version:

npx changeset version

This will bump the version.

And finally publish the package to npm:

npx changeset publish

FAQs

Last updated on 02 Jun 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc