mirror of
https://github.com/log4js-node/log4js-node.git
synced 2026-02-01 15:59:19 +00:00
Merge pull request #826 from log4js-node/update-streamroller
Update streamroller
This commit is contained in:
commit
d9b92cc145
@ -40,11 +40,11 @@ function colorize(str, style) {
|
||||
return colorizeStart(style) + str + colorizeEnd(style);
|
||||
}
|
||||
|
||||
function timestampLevelAndCategory(loggingEvent, colour, timezoneOffset) {
|
||||
function timestampLevelAndCategory(loggingEvent, colour) {
|
||||
return colorize(
|
||||
util.format(
|
||||
'[%s] [%s] %s - '
|
||||
, dateFormat.asString(loggingEvent.startTime, timezoneOffset)
|
||||
, dateFormat.asString(loggingEvent.startTime)
|
||||
, loggingEvent.level
|
||||
, loggingEvent.categoryName
|
||||
)
|
||||
@ -61,23 +61,18 @@ function timestampLevelAndCategory(loggingEvent, colour, timezoneOffset) {
|
||||
*
|
||||
* @author Stephan Strittmatter
|
||||
*/
|
||||
function basicLayout(loggingEvent, timezoneOffset) {
|
||||
return timestampLevelAndCategory(
|
||||
loggingEvent,
|
||||
undefined,
|
||||
timezoneOffset
|
||||
) + util.format(...loggingEvent.data);
|
||||
function basicLayout(loggingEvent) {
|
||||
return timestampLevelAndCategory(loggingEvent) + util.format(...loggingEvent.data);
|
||||
}
|
||||
|
||||
/**
|
||||
* colouredLayout - taken from masylum's fork.
|
||||
* same as basicLayout, but with colours.
|
||||
*/
|
||||
function colouredLayout(loggingEvent, timezoneOffset) {
|
||||
function colouredLayout(loggingEvent) {
|
||||
return timestampLevelAndCategory(
|
||||
loggingEvent,
|
||||
loggingEvent.level.colour,
|
||||
timezoneOffset
|
||||
loggingEvent.level.colour
|
||||
) + util.format(...loggingEvent.data);
|
||||
}
|
||||
|
||||
@ -122,7 +117,7 @@ function dummyLayout(loggingEvent) {
|
||||
*
|
||||
* @authors ['Stephan Strittmatter', 'Jan Schmidle']
|
||||
*/
|
||||
function patternLayout(pattern, tokens, timezoneOffset) {
|
||||
function patternLayout(pattern, tokens) {
|
||||
const TTCC_CONVERSION_PATTERN = '%r %p %c - %m%n';
|
||||
const regex = /%(-?[0-9]+)?(\.?[0-9]+)?([[\]cdhmnprzxXy%])(\{([^}]+)\})?|([^%]+)/;
|
||||
|
||||
@ -156,7 +151,7 @@ function patternLayout(pattern, tokens, timezoneOffset) {
|
||||
}
|
||||
}
|
||||
// Format the date
|
||||
return dateFormat.asString(format, loggingEvent.startTime, timezoneOffset);
|
||||
return dateFormat.asString(format, loggingEvent.startTime);
|
||||
}
|
||||
|
||||
function hostname() {
|
||||
@ -176,7 +171,7 @@ function patternLayout(pattern, tokens, timezoneOffset) {
|
||||
}
|
||||
|
||||
function startTime(loggingEvent) {
|
||||
return dateFormat.asString('hh:mm:ss', loggingEvent.startTime, timezoneOffset);
|
||||
return dateFormat.asString('hh:mm:ss', loggingEvent.startTime);
|
||||
}
|
||||
|
||||
function startColour(loggingEvent) {
|
||||
|
||||
1467
package-lock.json
generated
1467
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -43,13 +43,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"circular-json": "^0.5.5",
|
||||
"date-format": "^1.2.0",
|
||||
"date-format": "^2.0.0",
|
||||
"debug": "^3.1.0",
|
||||
"rfdc": "^1.1.2",
|
||||
"streamroller": "0.7.0"
|
||||
"streamroller": "^1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@log4js-node/sandboxed-module": "^2.1.0",
|
||||
"@log4js-node/sandboxed-module": "^2.2.0",
|
||||
"codecov": "^3.0.2",
|
||||
"conventional-changelog": "^1.1.24",
|
||||
"deep-freeze": "0.0.1",
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
const test = require('tap').test;
|
||||
const sandbox = require('@log4js-node/sandboxed-module');
|
||||
const realFS = require('fs');
|
||||
|
||||
const modulePath = 'some/path/to/mylog4js.json';
|
||||
const pathsChecked = [];
|
||||
@ -15,6 +16,9 @@ test('log4js configure', (batch) => {
|
||||
fileRead = 0;
|
||||
|
||||
fakeFS = {
|
||||
ReadStream: realFS.ReadStream, // need to define these, because graceful-fs uses them
|
||||
WriteStream: realFS.WriteStream,
|
||||
closeSync: () => {},
|
||||
config: {
|
||||
appenders: {
|
||||
console: {
|
||||
|
||||
@ -226,6 +226,18 @@ test('log4js configuration validation', (batch) => {
|
||||
t.end();
|
||||
});
|
||||
|
||||
batch.test('should not throw error if configure object is freezed', (t) => {
|
||||
t.doesNotThrow(() => log4js.configure(deepFreeze({
|
||||
appenders: {
|
||||
dateFile: {
|
||||
type: 'dateFile', filename: 'test/tap/freeze-date-file-test', alwaysIncludePattern: false
|
||||
}
|
||||
},
|
||||
categories: { default: { appenders: ['dateFile'], level: log4js.levels.ERROR } }
|
||||
})));
|
||||
t.end();
|
||||
});
|
||||
|
||||
batch.test('should load appenders from core first', (t) => {
|
||||
const result = {};
|
||||
const sandboxedLog4js = sandbox.require(
|
||||
@ -346,17 +358,5 @@ test('log4js configuration validation', (batch) => {
|
||||
t.end();
|
||||
});
|
||||
|
||||
batch.test('should not throw error if configure object is freezed', (t) => {
|
||||
t.doesNotThrow(() => log4js.configure(deepFreeze({
|
||||
appenders: {
|
||||
dateFile: {
|
||||
type: 'dateFile', filename: 'test/tap/freeze-date-file-test', alwaysIncludePattern: false
|
||||
}
|
||||
},
|
||||
categories: { default: { appenders: ['dateFile'], level: log4js.levels.ERROR } }
|
||||
})));
|
||||
t.end();
|
||||
});
|
||||
|
||||
batch.end();
|
||||
});
|
||||
|
||||
@ -5,6 +5,7 @@ const path = require('path');
|
||||
const fs = require('fs');
|
||||
const log4js = require('../../lib/log4js');
|
||||
const EOL = require('os').EOL || '\n';
|
||||
const format = require('date-format');
|
||||
|
||||
function removeFile(filename) {
|
||||
try {
|
||||
@ -45,7 +46,7 @@ test('../../lib/appenders/dateFile', (batch) => {
|
||||
date: {
|
||||
type: 'dateFile',
|
||||
filename: 'test/tap/date-file-test.log',
|
||||
pattern: '-from-MM-dd',
|
||||
pattern: '-yyyy-MM-dd',
|
||||
layout: { type: 'messagePassThrough' }
|
||||
}
|
||||
},
|
||||
@ -67,15 +68,13 @@ test('../../lib/appenders/dateFile', (batch) => {
|
||||
});
|
||||
|
||||
batch.test('configure with options.alwaysIncludePattern', (t) => {
|
||||
const format = require('date-format');
|
||||
|
||||
const options = {
|
||||
appenders: {
|
||||
date: {
|
||||
category: 'tests',
|
||||
type: 'dateFile',
|
||||
filename: 'test/tap/date-file-test',
|
||||
pattern: '-from-MM-dd.log',
|
||||
pattern: 'yyyy-MM-dd.log',
|
||||
alwaysIncludePattern: true,
|
||||
layout: {
|
||||
type: 'messagePassThrough'
|
||||
@ -86,8 +85,9 @@ test('../../lib/appenders/dateFile', (batch) => {
|
||||
};
|
||||
|
||||
const thisTime = format.asString(options.appenders.date.pattern, new Date());
|
||||
const existingFile = path.join(process.cwd(), 'test/tap/', `date-file-test.${thisTime}`);
|
||||
fs.writeFileSync(
|
||||
path.join(__dirname, `date-file-test${thisTime}`),
|
||||
existingFile,
|
||||
`this is existing data${EOL}`,
|
||||
'utf8'
|
||||
);
|
||||
@ -95,13 +95,13 @@ test('../../lib/appenders/dateFile', (batch) => {
|
||||
const logger = log4js.getLogger('tests');
|
||||
logger.warn('this should be written to the file with the appended date');
|
||||
|
||||
t.teardown(() => { removeFile(`date-file-test${thisTime}`); });
|
||||
t.teardown(() => { removeFile(existingFile); });
|
||||
|
||||
// wait for filesystem to catch up
|
||||
log4js.shutdown(() => {
|
||||
fs.readFile(path.join(__dirname, `date-file-test${thisTime}`), 'utf8', (err, contents) => {
|
||||
t.include(contents, 'this should be written to the file with the appended date');
|
||||
fs.readFile(existingFile, 'utf8', (err, contents) => {
|
||||
t.include(contents, 'this is existing data', 'should not overwrite the file on open (issue #132)');
|
||||
t.include(contents, 'this should be written to the file with the appended date');
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
@ -203,7 +203,7 @@ test('log4js layouts', (batch) => {
|
||||
|
||||
const event = {
|
||||
data: ['this is a test'],
|
||||
startTime: new Date('2010-12-05T14:18:30.045Z'), // new Date(2010, 11, 5, 14, 18, 30, 45),
|
||||
startTime: new Date('2010-12-05 14:18:30.045'),
|
||||
categoryName: 'multiple.levels.of.tests',
|
||||
level: {
|
||||
toString: function () {
|
||||
@ -216,11 +216,6 @@ test('log4js layouts', (batch) => {
|
||||
|
||||
const layout = require('../../lib/layouts').patternLayout;
|
||||
|
||||
// override getTimezoneOffset
|
||||
event.startTime.getTimezoneOffset = function () {
|
||||
return 0;
|
||||
};
|
||||
|
||||
t.test('should default to "time logLevel loggerName - message"', (assert) => {
|
||||
testPattern(
|
||||
assert, layout, event, tokens, null,
|
||||
@ -280,7 +275,6 @@ test('log4js layouts', (batch) => {
|
||||
});
|
||||
|
||||
t.test('%d should allow for format specification', (assert) => {
|
||||
testPattern(assert, layout, event, tokens, '%d{ISO8601_WITH_TZ_OFFSET}', '2010-12-05T14:18:30.045-0000');
|
||||
testPattern(assert, layout, event, tokens, '%d{ISO8601}', '2010-12-05T14:18:30.045');
|
||||
testPattern(assert, layout, event, tokens, '%d{ABSOLUTE}', '14:18:30.045');
|
||||
testPattern(assert, layout, event, tokens, '%d{DATE}', '05 12 2010 14:18:30.045');
|
||||
|
||||
@ -104,6 +104,7 @@ test('log4js', (batch) => {
|
||||
const log4js = sandbox.require(
|
||||
'../../lib/log4js',
|
||||
{
|
||||
ignoreMissing: true,
|
||||
requires: {
|
||||
fs: {
|
||||
statSync: function () {
|
||||
@ -125,7 +126,7 @@ test('log4js', (batch) => {
|
||||
return ['file'];
|
||||
}
|
||||
},
|
||||
'./appenders/file': {
|
||||
'./file': {
|
||||
configure: function (configuration) {
|
||||
appenderConfig = configuration;
|
||||
return function () {
|
||||
@ -145,6 +146,7 @@ test('log4js', (batch) => {
|
||||
batch.test('with configure not called', (t) => {
|
||||
const fakeStdoutAppender = {
|
||||
configure: function () {
|
||||
this.required = true;
|
||||
return function (evt) {
|
||||
fakeStdoutAppender.evt = evt;
|
||||
};
|
||||
@ -162,6 +164,7 @@ test('log4js', (batch) => {
|
||||
|
||||
const logger = log4js.getLogger('some-logger');
|
||||
logger.debug('This is a test');
|
||||
t.ok(fakeStdoutAppender.required, 'stdout should be required');
|
||||
t.notOk(fakeStdoutAppender.evt, 'should not log anything');
|
||||
t.end();
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user