1.0.0 • Published 1 year ago

@harvve/tslog-mongodb-transport v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

tslog-mongodb-transport

The library allows logs to be stored in the mongodb timeseries collection.

Contributors Forks Stargazers Issues MIT License

About The Project

This library provides a transporter that allows logs to be written to the timeseries collection in MongoDB. The transporter simplifies configuration and ensures optimal writes to the database through log batching. It provides flexible out-of-the-box configuration and the ability to customise parameters according to your needs.

Installation

Requires: MongoDB >= v5.0, mongodb >= v4 driver and tslog >= v4

npm i @harvve/tslog-mongodb-transport

Usage

Attach transport to tslog instance.

import { Logger } from 'tslog';
import { MongoClient } from 'mongodb';
import { Transporter } from '@harvve/tslog-mongodb-transport';

async function main(): Promise<void> {

  const client = await new MongoClient('mongodb://localhost:27017').connect();

  const mongodbTransporter = new Transporter({ db: client.db('logs_db') });

  const logger = new Logger({
    // on production set to true for better performance
    // https://tslog.js.org/#/?id=hidelogpositionforproduction-default-false
    hideLogPositionForProduction: false,
    argumentsArrayName: 'argumentsArray',  // default key name used by Transporter
    metaProperty: 'metadata', // default key name used by Transporter
    attachedTransports: [mongodbTransporter.transport.bind(mongodbTransporter)]
  });

  logger.info('Hello!');
}

Check out working example --> View Demo

Settings

All possible settings are defined in the ITransporterOptions interface and modern IDEs will provide auto-completion accordingly.

KeyTypeRequirementDescriptionDefault
dbDbrequiredclass that represents a MongoDB Database (from mongodb lib)---
collectionNamestringoptionalthe name of collection in mongodblogs
granualityseconds minutes hoursoptionalthe timeseries data granularityseconds
argumentsArrayNamestringoptionalthe logger arguments property key nameargumentsArray
bucketSizenumberoptionalthe size of the bucket with logs suitable for writing5000
updateIntervalnumberoptionalthe number of seconds between logs that must elapse to record an incomplete bucket1sec
logTTLnumberoptionalthe lifetime (in seconds) of the document in the collection2592000sec (30days)
onErrorCallback(err: unknown)functionoptionalcallback function called when an error occurs---
onBeforeWriteCallback(bucketLength: number)functionoptionalcallback function called before write (bucketLength - current length of items in bucket)---
onAfterWriteCallback(insertResult: InsertManyResult, bucketLength: number)functionoptionalcallback function called after successful writing (insertResult - insert stats, bucketLength - current length of items in bucket)---
onFinallyWriteCallback(bucketLength: number)functionoptionalcallback function called when recording has been completed (bucketLength - current length of items in bucket)---

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Project Link: https://github.com/harvve/tslog-mongodb-transport

Acknowledgments

1.0.0

1 year ago