Skip to content

Stream to a file which is automatically rotated based on current time

License

Notifications You must be signed in to change notification settings

dex4er/js-file-timestamp-stream

Repository files navigation

file-timestamp-stream

GitHub CI Trunk Check Coverage Status npm

This module creates stream.Writable to a file which is automatically rotated based on current time and uses strftime template for file names.

Requirements

This module requires ES2021 with Node >= 16.

Installation

npm install file-timestamp-stream

Additionally for Typescript:

npm install -D @types/node

Usage

Example:

import FileTimestampStream from "file-timestamp-stream"
// or
import {FileTimestampStream} from "file-timestamp-stream"

Options

  • flags is a string with flags for the opened stream (default: 'a')
  • fs is a custom fs module (optional)
  • path is a template for new filenames (default: 'out.log')

Example:

Basic path based on strftime parameters:

const stream = new FileTimestampStream({
  path: "%Y-%m-%dT%H.log",
  flags: "a",
})

newFilename

This method can be overridden in the subclass.

The method generates a filename for new files. By default, it returns a new filename based on path and current time.

Example:

import strftime from "ultra-strftime"

class MyFileTimestampStream extends FileTimestampStream {
  /** count how many files has been created */
  counter = 0

  // for pure Javascript explicit constructor is necessary
  // constructor (options) { super(options); this.counter = 0 }

  protected newFilename(): string {
    const filename = strftime(this.path)
    if (filename !== this.currentFilename) this.counter++
    return filename
  }
}

const stream = new MyFileTimestampStream({
  path: "%Y-%m-%dT%H:%M.log",
})

Properties

Readonly public properties based on contructor's options:

  • flags
  • fs
  • path

Protected properties for a custom subclass:

  • currentFilename contains the last opened filename
  • stream contains current fs.WriteStream object

Path template format

A path can contain strftime specifiers.

Warning

This stream has to be closed to free streams and timers.

License

Copyright (c) 2017-2024 Piotr Roszatycki [email protected]

MIT

About

Stream to a file which is automatically rotated based on current time

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •