file-timestamp-stream
v3.0.0
Published
Writing stream with file rotating based on timestamp
Downloads
1,037
Readme
file-timestamp-stream
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 filenamestream
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]