npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@vrbo/pino-rotating-file

v4.4.0

Published

A hapi-pino log transport for splitting logs into separate, automatically rotating files.

Downloads

4,426

Readme

@vrbo/pino-rotating-file

NPM Version Dependency Status NPM Downloads

Introduction

A pino transport for filtering log entries and writing them to a file that automatically rotates. Log entries that are not filtered continue out of stdout.

This is useful for logging when you want different entries in different rotating files. Using rotating files allows you to roll logs across multiple files so that individual file sizes don't grow too large and old files get deleted.

At its core, this processor takes a simple config js file that contains an output path and additional options for the rotation. Under the hood, it uses the rotating-file-stream - check out the options. It also has a filter function to determine if the log entry should go to the log file, or be forwarded through to stdout.

Usage

Install this module as a dependency in your project with npm install @vrbo/pino-rotating-file

After this, you can reference it as rotate-logs in your npm scripts in your package.json file when running your main application, like this:

package.json

...
"scripts": {
  "start": "node ./index.js | rotate-logs --config=.request-log.js"
}
...

Example config file .request-log.js

module.exports = {
  filter(data) {return !!data.req},
  output: {
    path: "request.log", // name of file
    options: {
      path: "logs/", // path to write files to
      size: "10M", // max file size
      rotate: 5 // keep 5 rotated logs
    }
  }
}

If no --config flag is given, it will look for the file .rotate.js by default

Multiple log files

You can chain all these together to split your logs into separate, automatically rotating log files:

package.json

...
"scripts": {
  "start": "node ./index.js | rotate-logs --config=.request-log.js | rotate-logs --config=.error-log.js | rotate-logs --config=.server-log.js"
}
...

Where .request-log.js pulls all the logs that have req tags, .error-log.js pulls all the logs with error tags, and .server-log.js puts all the rest into another file.

NOTE: if the config provided does not exist or fails to load, then all logs will be passed to stdout.

File rotation only

To disable formatting logs into JSON and take advantage of file rotation only, simply add isJson: false to the output object in your configuration file:

module.exports = {
  filter(data) {return !!data.req},
  output: {
    path: "request.log",
    isJson: false // JSON formatting will be disabled,
    options: {
      // Options configured here are passed along to rotating-file-stream.
      // See the Introduction of this README for a link to valid options.
      ... 
    }
  }
}

Further Reading