Socket
Socket
Sign inDemoInstall

sonic-boom

Package Overview
Dependencies
1
Maintainers
1
Versions
60
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

sonic-boom


Version published
Weekly downloads
6.1M
decreased by-17.99%
Maintainers
1
Install size
33.5 kB
Created
Weekly downloads
 

Package description

What is sonic-boom?

The 'sonic-boom' npm package is a fast and efficient logging library designed for Node.js. It is optimized for high-performance logging, making it suitable for applications that require rapid and concurrent log writing. The package provides a simple API for writing logs to files and supports features like file rotation and asynchronous logging.

What are sonic-boom's main functionalities?

Basic Logging

This feature allows you to create a basic logger that writes log messages to a specified file. The example demonstrates how to initialize the logger, write a log message, and close the logger.

const SonicBoom = require('sonic-boom');
const logger = new SonicBoom({ dest: './log.txt' });
logger.write('Hello, World!\n');
logger.end();

Asynchronous Logging

Sonic-boom supports asynchronous logging, which can improve performance by not blocking the event loop. The example shows how to enable asynchronous logging by setting the 'sync' option to false.

const SonicBoom = require('sonic-boom');
const logger = new SonicBoom({ dest: './log.txt', sync: false });
logger.write('This is an async log message.\n');
logger.end();

File Rotation

This feature allows you to rotate log files when they reach a certain size. The example demonstrates how to set a minimum length for log files and how to reopen a new log file for continued logging.

const SonicBoom = require('sonic-boom');
const logger = new SonicBoom({ dest: './log.txt', minLength: 4096 });
logger.write('Log message that triggers rotation.\n');
logger.reopen('./new-log.txt');

Other packages similar to sonic-boom

Readme

Source

sonic-boom  Build Status

Extremely fast utf8-only stream implementation to write to files and file descriptors.

This implementation is partial, but support backpressure and .pipe() in is here. However, it is 20x faster than Node Core fs.createWriteStream():

benchSonic*1000: 476.229ms
benchCore*1000: 8250.532ms
benchSonic*1000: 478.423ms
benchCore*1000: 8096.463ms

Note that if this is used to log to a windows terminal (cmd.exe or powershell), it is needed to run chcp 65001 in the terminal to correctly display utf-8 characters, see chcp for more details.

Install

npm i sonic-boom

Example

'use strict'

const SonicBoom = require('sonic-boom')
const sonic = new SonicBoom(process.stdout.fd) // or '/path/to/destination'

for (var i = 0; i < 10; i++) {
  sonic.write('hello sonic\n')
}

API

SonicBoom(String|Number, (minLength))

Creates a new instance of SonicBoom.

The first argument can be:

  1. a string that is a path to a file to be written to (mode 'a')
  2. a file descriptor, something that is returned by fs.open or fs.openSync.

The second argument is the minimum length of the internal buffer that is required before flushing.

It will emit the 'ready' event when a file descriptor is available.

SonicBoom#write(string)

Writes the string to the file. It will return false to signal the producer to slow down.

SonicBoom#flush()

Writes the current buffer to the file if a write was not in progress. Do nothing if minLength is zero or if it is already writing.

SonicBoom#reopen([file])

Reopen the file in place, useful for log rotation.

Example:

const stream = new SonicBoom('./my.log')
process.on('SIGUSR2', function () {
  stream.reopen()
})

SonicBoom#flushSync()

Flushes the buffered data synchronously. This is a costly operation.

SonicBoom#end()

Closes the stream, the data will be flushed down asynchronously

SonicBook#destroy()

Closes the stream immediately, the data is not flushed.

License

MIT

Keywords

FAQs

Last updated on 21 Nov 2018

Did you know?

Socket

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc