This module creates stream.Writable to a file which is automatically rotated based on current time and uses strftime template for file names.
This module requires ES2021 with Node >= 16.
npm install file-timestamp-streamAdditionally for Typescript:
npm install -D @types/nodeExample:
import FileTimestampStream from "file-timestamp-stream"
// or
import {FileTimestampStream} from "file-timestamp-stream"flagsis a string with flags for the opened stream (default:'a')fsis a custom fs module (optional)pathis 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",
})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",
})Readonly public properties based on contructor's options:
flagsfspath
Protected properties for a custom subclass:
currentFilenamecontains the last opened filenamestreamcontains current fs.WriteStream object
A path can contain strftime specifiers.
This stream has to be closed to free streams and timers.
Copyright (c) 2017-2024 Piotr Roszatycki [email protected]