Logger: Fix timestamp and format (#5571)
* remove no-op config of logger * add a test to check on the timestamp * add a test to verify that we get non json console loggging by default * configure transports to include timestamps in files * Add failing test to confirm that WinstonLoggerAdapter is not filtering on level. * actually fix the test to refelect the facth that this isn't the problem * Remove bogus date ranges that are now failing becuase we have timestamps.
This commit is contained in:
committed by
Diamond Lewis
parent
81ecf2fd74
commit
87da62bca2
@@ -39,6 +39,36 @@ describe('WinstonLogger', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should have a timestamp', done => {
|
||||||
|
logging.logger.info('hi');
|
||||||
|
logging.logger.query({ limit: 1 }, (err, results) => {
|
||||||
|
if (err) {
|
||||||
|
done.fail(err);
|
||||||
|
}
|
||||||
|
expect(results['parse-server'][0].timestamp).toBeDefined();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('console should not be json', done => {
|
||||||
|
// Force console transport
|
||||||
|
reconfigureServer({
|
||||||
|
logsFolder: null,
|
||||||
|
silent: false,
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
spyOn(process.stdout, 'write');
|
||||||
|
logging.logger.info('hi', { key: 'value' });
|
||||||
|
expect(process.stdout.write).toHaveBeenCalled();
|
||||||
|
const firstLog = process.stdout.write.calls.first().args[0];
|
||||||
|
expect(firstLog).toEqual('info: hi {"key":"value"}' + '\n');
|
||||||
|
return reconfigureServer();
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should enable JSON logs', done => {
|
it('should enable JSON logs', done => {
|
||||||
// Force console transport
|
// Force console transport
|
||||||
reconfigureServer({
|
reconfigureServer({
|
||||||
|
|||||||
@@ -66,10 +66,7 @@ describe('LoggerController', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('can process an ascending query without throwing', done => {
|
it('can process an ascending query without throwing', done => {
|
||||||
// Make mock request
|
|
||||||
const query = {
|
const query = {
|
||||||
from: '2016-01-01Z00:00:00',
|
|
||||||
until: '2016-01-01Z00:00:00',
|
|
||||||
size: 5,
|
size: 5,
|
||||||
order: 'asc',
|
order: 'asc',
|
||||||
level: 'error',
|
level: 'error',
|
||||||
@@ -114,10 +111,7 @@ describe('LoggerController', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('can process a descending query without throwing', done => {
|
it('can process a descending query without throwing', done => {
|
||||||
// Make mock request
|
|
||||||
const query = {
|
const query = {
|
||||||
from: '2016-01-01Z00:00:00',
|
|
||||||
until: '2016-01-01Z00:00:00',
|
|
||||||
size: 5,
|
size: 5,
|
||||||
order: 'desc',
|
order: 'desc',
|
||||||
level: 'error',
|
level: 'error',
|
||||||
|
|||||||
@@ -66,6 +66,22 @@ describe('error logs', () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Should filter on query', done => {
|
||||||
|
const winstonLoggerAdapter = new WinstonLoggerAdapter();
|
||||||
|
winstonLoggerAdapter.log('error', 'testing error logs');
|
||||||
|
winstonLoggerAdapter.query(
|
||||||
|
{
|
||||||
|
from: new Date(Date.now() - 500),
|
||||||
|
size: 100,
|
||||||
|
level: 'error',
|
||||||
|
},
|
||||||
|
results => {
|
||||||
|
expect(results.filter(e => e.level !== 'error').length).toBe(0);
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('verbose logs', () => {
|
describe('verbose logs', () => {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import winston from 'winston';
|
import winston, { format } from 'winston';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import DailyRotateFile from 'winston-daily-rotate-file';
|
import DailyRotateFile from 'winston-daily-rotate-file';
|
||||||
@@ -19,9 +19,9 @@ function configureTransports(options) {
|
|||||||
{
|
{
|
||||||
filename: 'parse-server.info',
|
filename: 'parse-server.info',
|
||||||
json: true,
|
json: true,
|
||||||
|
format: format.combine(format.timestamp(), format.json()),
|
||||||
},
|
},
|
||||||
options,
|
options
|
||||||
{ timestamp: true }
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
parseServer.name = 'parse-server';
|
parseServer.name = 'parse-server';
|
||||||
@@ -32,27 +32,28 @@ function configureTransports(options) {
|
|||||||
{
|
{
|
||||||
filename: 'parse-server.err',
|
filename: 'parse-server.err',
|
||||||
json: true,
|
json: true,
|
||||||
|
format: format.combine(format.timestamp(), format.json()),
|
||||||
},
|
},
|
||||||
options,
|
options,
|
||||||
{ level: 'error', timestamp: true }
|
{ level: 'error' }
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
parseServerError.name = 'parse-server-error';
|
parseServerError.name = 'parse-server-error';
|
||||||
transports.push(parseServerError);
|
transports.push(parseServerError);
|
||||||
}
|
}
|
||||||
|
|
||||||
transports.push(
|
const consoleFormat = options.json ? format.json() : format.simple();
|
||||||
new winston.transports.Console(
|
const consoleOptions = Object.assign(
|
||||||
Object.assign(
|
{
|
||||||
{
|
colorize: true,
|
||||||
colorize: true,
|
name: 'console',
|
||||||
name: 'console',
|
silent,
|
||||||
silent,
|
format: consoleFormat,
|
||||||
},
|
},
|
||||||
options
|
options
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
transports.push(new winston.transports.Console(consoleOptions));
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.configure({
|
logger.configure({
|
||||||
|
|||||||
Reference in New Issue
Block a user