1 | streamroller
|
---|
2 | ============
|
---|
3 |
|
---|
4 | node.js file streams that roll over when they reach a maximum size, or a date/time.
|
---|
5 |
|
---|
6 | npm install streamroller
|
---|
7 |
|
---|
8 | ## usage
|
---|
9 |
|
---|
10 | var rollers = require('streamroller');
|
---|
11 | var stream = new rollers.RollingFileStream('myfile', 1024, 3);
|
---|
12 | stream.write("stuff");
|
---|
13 | stream.end();
|
---|
14 |
|
---|
15 | The streams behave the same as standard node.js streams, except that when certain conditions are met they will rename the current file to a backup and start writing to a new file.
|
---|
16 |
|
---|
17 | ### new RollingFileStream(filename [, maxSize, numBackups, options])
|
---|
18 | * `filename` (String)
|
---|
19 | * `maxSize` - the size in bytes to trigger a rollover, if not provided this defaults to MAX_SAFE_INTEGER and the stream will not roll.
|
---|
20 | * `numBackups` - the number of old files to keep
|
---|
21 | * `options` - Object
|
---|
22 | * `encoding` - defaults to 'utf8'
|
---|
23 | * `mode` - defaults to 0644
|
---|
24 | * `flags` - defaults to 'a' (see [fs.open](https://nodejs.org/dist/latest-v8.x/docs/api/fs.html#fs_fs_open_path_flags_mode_callback) for more details)
|
---|
25 | * `compress` - (boolean) defaults to `false` - compress the backup files using gzip (files will have `.gz` extension).
|
---|
26 | * `keepFileExt` - (boolean) defaults to `false` - keep the file original extension. e.g.: `abc.log -> abc.1.log`.
|
---|
27 |
|
---|
28 | This returns a `WritableStream`. When the current file being written to (given by `filename`) gets up to or larger than `maxSize`, then the current file will be renamed to `filename.1` and a new file will start being written to. Up to `numBackups` of old files are maintained, so if `numBackups` is 3 then there will be 4 files:
|
---|
29 | <pre>
|
---|
30 | filename
|
---|
31 | filename.1
|
---|
32 | filename.2
|
---|
33 | filename.3
|
---|
34 | </pre>
|
---|
35 | When filename size >= maxSize then:
|
---|
36 | <pre>
|
---|
37 | filename -> filename.1
|
---|
38 | filename.1 -> filename.2
|
---|
39 | filename.2 -> filename.3
|
---|
40 | filename.3 gets overwritten
|
---|
41 | filename is a new file
|
---|
42 | </pre>
|
---|
43 |
|
---|
44 | ### new DateRollingFileStream(filename, pattern, options)
|
---|
45 | * `filename` (String)
|
---|
46 | * `pattern` (String) - the date pattern to trigger rolling (see below)
|
---|
47 | * `options` - Object
|
---|
48 | * `encoding` - defaults to 'utf8'
|
---|
49 | * `mode` defaults to 0644
|
---|
50 | * `flags` defaults to 'a' (see [fs.open](https://nodejs.org/dist/latest-v8.x/docs/api/fs.html#fs_fs_open_path_flags_mode_callback) for more details)
|
---|
51 | * `compress` - (boolean) compress the backup files, defaults to false
|
---|
52 | * `keepFileExt` - (boolean) defaults to `false` - keep the file original extension. e.g.: `abc.log -> abc.2013-08-30.log`.
|
---|
53 | * `alwaysIncludePattern` - (boolean) extend the initial file with the pattern, defaults to false
|
---|
54 | * `daysToKeep` - (integer) if this is greater than 0, then files older than `daysToKeep` days will be deleted during file rolling.
|
---|
55 |
|
---|
56 |
|
---|
57 | This returns a `WritableStream`. When the current time, formatted as `pattern`, changes then the current file will be renamed to `filename.formattedDate` where `formattedDate` is the result of processing the date through the pattern, and a new file will begin to be written. Streamroller uses [date-format](http://github.com/nomiddlename/date-format) to format dates, and the `pattern` should use the date-format format. e.g. with a `pattern` of `".yyyy-MM-dd"`, and assuming today is August 29, 2013 then writing to the stream today will just write to `filename`. At midnight (or more precisely, at the next file write after midnight), `filename` will be renamed to `filename.2013-08-29` and a new `filename` will be created. If `options.alwaysIncludePattern` is true, then the initial file will be `filename.2013-08-29` and no renaming will occur at midnight, but a new file will be written to with the name `filename.2013-08-30`.
|
---|