12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- "use strict";
- var streams = require('../streams')
- , layouts = require('../layouts')
- , path = require('path')
- , os = require('os')
- , eol = os.EOL || '\n'
- , openFiles = [];
- //close open files on process exit.
- process.on('exit', function() {
- openFiles.forEach(function (file) {
- file.end();
- });
- });
- /**
- * File appender that rolls files according to a date pattern.
- * @filename base filename.
- * @pattern the format that will be added to the end of filename when rolling,
- * also used to check when to roll files - defaults to '.yyyy-MM-dd'
- * @layout layout function for log messages - defaults to basicLayout
- */
- function appender(filename, pattern, alwaysIncludePattern, layout) {
- layout = layout || layouts.basicLayout;
- var logFile = new streams.DateRollingFileStream(
- filename,
- pattern,
- { alwaysIncludePattern: alwaysIncludePattern }
- );
- openFiles.push(logFile);
-
- return function(logEvent) {
- logFile.write(layout(logEvent) + eol, "utf8");
- };
- }
- function configure(config, options) {
- var layout;
-
- if (config.layout) {
- layout = layouts.layout(config.layout.type, config.layout);
- }
-
- if (!config.alwaysIncludePattern) {
- config.alwaysIncludePattern = false;
- }
-
- if (options && options.cwd && !config.absolute) {
- config.filename = path.join(options.cwd, config.filename);
- }
- return appender(config.filename, config.pattern, config.alwaysIncludePattern, layout);
- }
- exports.appender = appender;
- exports.configure = configure;
|