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 ES6 with Node >= 6.
npm install file-timestamp-stream
Additionally for Typescript:
npm install -D @types/node
Example:
const {FileTimestampStream} = require("file-timestamp-stream")
Typescript:
import FileTimestampStream from "file-timestamp-stream"
// or
import {FileTimestampStream} from "file-timestamp-stream"
flags
is a string with flags for 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",
})
This method can be overriden in subclass.
The method generates a filename for new files. By default it returns 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:
flags
fs
path
Protected properties for custom subclass:
currentFilename
contains last opened filenamestream
contains current fs.WriteStream object
Path can contain strftime specifiers.
This stream have to be closed to free own streams and timers.
Copyright (c) 2017-2019 Piotr Roszatycki piotr.roszatycki@gmail.com