default ring buffer size to zero

This commit is contained in:
Ersun Warncke 2019-03-11 10:27:35 -04:00
parent b31022e329
commit cb22e98766
2 changed files with 30 additions and 20 deletions

View file

@ -8,23 +8,28 @@ const Logger = module.exports = {
this.defaultLevel =
process.env['LOG_LEVEL'] || (this.isProduction ? 'warn' : 'debug')
this.loggerName = name
this.ringBuffer = new bunyan.RingBuffer({
limit: process.env['LOG_RING_BUFFER_SIZE'] || 30
})
this.ringBufferSize = parseInt(process.env['LOG_RING_BUFFER_SIZE']) || 0
const loggerStreams = [
{
level: this.defaultLevel,
stream: process.stdout
}
]
if (this.ringBufferSize > 0) {
this.ringBuffer = new bunyan.RingBuffer({limit: this.ringBufferSize})
loggerStreams.push({
level: 'trace',
type: 'raw',
stream: this.ringBuffer
})
}
else {
this.ringBuffer = null
}
this.logger = bunyan.createLogger({
name,
serializers: bunyan.stdSerializers,
streams: [
{
level: this.defaultLevel,
stream: process.stdout
},
{
level: 'trace',
type: 'raw',
stream: this.ringBuffer
}
]
streams: loggerStreams
})
if (this.isProduction) {
// clear interval if already set
@ -51,6 +56,7 @@ const Logger = module.exports = {
}
request(options, (err, response, body) => {
if (err) {
this.logger.level(this.defaultLevel)
return
}
if (parseInt(body) > Date.now()) {
@ -165,7 +171,7 @@ const Logger = module.exports = {
},
error(attributes, message, ...args) {
if (this.isProduction) {
if (this.ringBuffer !== null) {
attributes.logBuffer = this.ringBuffer.records
}
this.logger.error(attributes, message, ...Array.from(args))

View file

@ -338,16 +338,16 @@ describe('LoggingManager', function() {
]
})
describe('in production', function() {
describe('when ring buffer size is positive', function() {
beforeEach(function() {
process.env['NODE_ENV'] = 'production'
process.env['LOG_RING_BUFFER_SIZE'] = '20'
this.logger = this.LoggingManager.initialize(this.loggerName)
this.logger.ringBuffer.records = this.logBufferMock
this.logger.error({}, 'error')
})
afterEach(function() {
process.env['NODE_ENV'] = undefined
process.env['LOG_RING_BUFFER_SIZE'] = undefined
})
it('should include buffered logs in error log', function() {
@ -357,13 +357,17 @@ describe('LoggingManager', function() {
})
})
describe('not in production', function() {
describe('when ring buffer size is zero', function() {
beforeEach(function() {
process.env['LOG_RING_BUFFER_SIZE'] = '0'
this.logger = this.LoggingManager.initialize(this.loggerName)
this.logger.ringBuffer.records = this.logBufferMock
this.logger.error({}, 'error')
})
afterEach(function() {
process.env['LOG_RING_BUFFER_SIZE'] = undefined
})
it('should not include buffered logs in error log', function() {
chai.expect(this.mockBunyanLogger.error.lastCall.args[0].logBuffer).be
.undefined