8000 Version 2 by nomiddlename · Pull Request #459 · log4js-node/log4js-node · GitHub
[go: up one dir, main page]

Skip to content

Version 2 #459

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Mar 26, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions lib/appenders/categoryFilter.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
'use strict';

const log4js = require('../log4js');

function categoryFilter(excludes, appender) {
if (typeof excludes === 'string') excludes = [excludes];
return (logEvent) => {
Expand All @@ -11,11 +9,9 @@ function categoryFilter(excludes, appender) {
};
}

function configure(config, options) {
log4js.loadAppender(config.appender.type);
const appender = log4js.appenderMakers[config.appender.type](config.appender, options);
function configure(config, layouts, findAppender) {
const appender = findAppender(config.appender);
return categoryFilter(config.exclude, appender);
}

module.exports.appender = categoryFilter;
module.exports.configure = configure;
2 changes: 1 addition & 1 deletion lib/appenders/clustered.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ function deserializeLoggingEvent(loggingEventString) {
try {
loggingEvent = JSON.parse(loggingEventString);
loggingEvent.startTime = new Date(loggingEvent.startTime);
loggingEvent.level = log4js.levels.toLevel(loggingEvent.level.levelStr);
loggingEvent.level = log4js.levels.getLevel(loggingEvent.level.levelStr);
// Unwrap serialized errors
for (let i = 0; i < loggingEvent.data.length; i++) {
const item = loggingEvent.data[i];
Expand Down
8 changes: 2 additions & 6 deletions lib/appenders/console.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
'use strict';

const layouts = require('../layouts');

const consoleLog = console.log.bind(console);

function consoleAppender(layout, timezoneOffset) {
layout = layout || layouts.colouredLayout;
return (loggingEvent) => {
consoleLog(layout(loggingEvent, timezoneOffset));
};
}

function configure(config) {
let layout;
function configure(config, layouts) {
let layout = layouts.colouredLayout;
if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout);
}
return consoleAppender(layout, config.timezoneOffset);
}

module.exports.appender = consoleAppender;
module.exports.configure = configure;
53 changes: 11 additions & 42 deletions lib/appenders/dateFile.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,9 @@
'use strict';

const streams = require('streamroller');
const layouts = require('../layouts');
const path = require('path');
const os = require('os');

const eol = os.EOL || '\n';
const openFiles = [];

// close open files on process exit.
process.on('exit', () => {
openFiles.forEach((file) => {
file.end();
});
});

/**
* File appender that rolls files according to a date pattern.
Expand All @@ -30,21 +20,27 @@ function appender(
options,
timezoneOffset
) {
layout = layout || layouts.basicLayout;
const logFile = new streams.DateRollingFileStream(
filename,
pattern,
options
);
openFiles.push(logFile);

return (logEvent) => {
const app = function (logEvent) {
logFile.write(layout(logEvent, timezoneOffset) + eol, 'utf8');
};

app.shutdown = function (complete) {
logFile.write('', 'utf-8', () => {
logFile.end(complete);
});
};

return app;
}

function configure(config, options) {
let layout;
function configure(config, layouts) {
let layout = layouts.basicLayout;

if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout);
Expand All @@ -54,10 +50,6 @@ function configure(config, options) {
config.alwaysIncludePattern = false;
}

if (options && options.cwd && !config.absolute) {
config.filename = path.join(options.cwd, config.filename);
}

return appender(
config.filename,
config.pattern,
Expand All @@ -67,27 +59,4 @@ function configure(config, options) {
);
}

function shutdown(cb) {
let completed = 0;
let error;
const complete = (err) => {
error = error || err;
completed++; // eslint-disable-line no-plusplus
if (completed >= openFiles.length) {
cb(error);
}
};
if (!openFiles.length) {
return cb();
}

return openFiles.forEach((file) => {
file.write('', 'utf-8', () => {
file.end(complete);
});
});
}

module.exports.appender = appender;
module.exports.configure = configure;
module.exports.shutdown = shutdown;
96 changes: 33 additions & 63 deletions lib/appenders/file.js
Original file line number Diff line number Diff line change
@@ -1,31 +1,25 @@
'use strict';

const debug = require('debug')('log4js:file');
const layouts = require('../layouts');
const path = require('path');
const streams = require('streamroller');
const os = require('os');

const eol = os.EOL || '\n';
const openFiles = [];

// close open files on process exit.
process.on('exit', () => {
debug('Exit handler called.');
openFiles.forEach((file) => {
file.end();
function openTheStream(file, fileSize, numFiles, options) {
const stream = new streams.RollingFileStream(
file,
fileSize,
numFiles,
options
);
stream.on('error', (err) => {
console.error('log4js.fileAppender - Writing to file %s, error happened ', file, err); //eslint-disable-line
});
});
return stream;
}

// On SIGHUP, close and reopen all files. This allows this appender to work with
// logrotate. Note that if you are using logrotate, you should not set
// `logSize`.
process.on('SIGHUP', () => {
debug('SIGHUP handler called.');
openFiles.forEach((writer) => {
writer.closeTheStream(writer.openTheStream.bind(writer));
});
});

/**
* File Appender writing the logs to a text file. Supports rolling of logs by size.
Expand All @@ -42,7 +36,6 @@ process.on('SIGHUP', () => {
*/
function fileAppender(file, layout, logSize, numBackups, options, timezoneOffset) {
file = path.normalize(file);
layout = layout || layouts.basicLayout;
numBackups = numBackups === undefined ? 5 : numBackups;
// there has to be at least one backup if logSize has been specified
numBackups = numBackups === 0 ? 1 : numBackups;
Expand All @@ -54,40 +47,40 @@ function fileAppender(file, layout, logSize, numBackups, options, timezoneOffset
options, ', ',
timezoneOffset, ')'
);
const writer = openTheStream(file, logSize, numBackups, options);

// push file to the stack of open handlers
openFiles.push(writer);
const writer = openTheStream(file, logSize, numBackups, options);

return function (loggingEvent) {
const app = function (loggingEvent) {
writer.write(layout(loggingEvent, timezoneOffset) + eol, 'utf8');
};
}

function openTheStream(file, fileSize, numFiles, options) {
const stream = new streams.RollingFileStream(
file,
fileSize,
numFiles,
options
);
stream.on('error', (err) => {
console.error('log4js.fileAppender - Writing to file %s, error happened ', file, err);
app.reopen = function () {
writer.closeTheStream(writer.openTheStream.bind(writer));
};

app.shutdown = function (complete) {
writer.write('', 'utf-8', () => {
writer.end(complete);
});
};

// On SIGHUP, close and reopen all files. This allows this appender to work with
// logrotate. Note that if you are using logrotate, you should not set
// `logSize`.
process.on('SIGHUP', () => {
debug('SIGHUP handler called.');
app.reopen();
});
return stream;
}

return app;
}
function configure(config, options) {
let layout;
function configure(config, layouts) {
let layout = layouts.basicLayout;
if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout);
}

if (options && options.cwd && !config.absolute) {
config.filename = path.join(options.cwd, config.filename);
}

return fileAppender(
config.filename,
layout,
Expand All @@ -98,27 +91,4 @@ function configure(config, options) {
);
}

function shutdown(cb) {
let completed = 0;
let error;
const complete = (err) => {
error = error || err;
completed++; // eslint-disable-line no-plusplus
if (completed >= openFiles.length) {
cb(error);
}
};
if (!openFiles.length) {
return cb();
}

return openFiles.forEach((file) => {
file.write('', 'utf-8', () => {
file.end(complete);
});
});
}

module.exports.appender = fileAppender;
module.exports.configure = configure;
module.exports.shutdown = shutdown;
11 changes: 2 additions & 9 deletions lib/appenders/fileSync.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict';

const debug = require('debug')('log4js:fileSync');
const layouts = require('../layouts');
const path = require('path');
const fs = require('fs');
const os = require('os');
Expand Down Expand Up @@ -135,7 +134,6 @@ class RollingFileSync {
function fileAppender(file, layout, logSize, numBackups, timezoneOffset) {
debug('fileSync appender created');
file = path.normalize(file);
layout = layout || layouts.basicLayout;
numBackups = numBackups === undefined ? 5 : numBackups;
// there has to be at least one backup if logSize has been specified
numBackups = numBackups === 0 ? 1 : numBackups;
Expand Down Expand Up @@ -174,16 +172,12 @@ function fileAppender(file, layout, logSize, numBackups, timezoneOffset) {
};
}

function configure(config, options) {
let layout;
function configure(config, layouts) {
let layout = layouts.basicLayout;
if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout);
}

if (options && options.cwd && !config.absolute) {
config.filename = path.join(options.cwd, config.filename);
}

return fileAppender(
config.filename,
layout,
Expand All @@ -193,5 +187,4 @@ function configure(config, options) {
);
}

module.exports.appender = fileAppender;
module.exports.configure = configure;
Loading
0