Skip to content

Commit

Permalink
feat: refactor logger to use child
Browse files Browse the repository at this point in the history
  • Loading branch information
meenahoda committed Dec 1, 2021
1 parent 31007a4 commit 1fc8697
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 20 deletions.
31 changes: 24 additions & 7 deletions lib/plugin/components/services/logger/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const pinoPretty = require('pino-pretty')
const moment = require('moment')
const path = require('path')
const fs = require('fs')
const { isPlainObject } = require('lodash')

class Logger {
boot (options) {
Expand All @@ -15,16 +16,26 @@ class Logger {
this.loggerOutputFilePath = generateFilePath(process.env.LOGGER_OUTPUT_DIR_PATH)
options.messages.info(this.loggerOutputFilePath ? `Output logs to ${this.loggerOutputFilePath}` : 'No output file')
this.logger = this.createLogger()
this.logger.info('Logger initialised')
}

addLogger (namespace = 'logger') {
const fns = {}
const createLogFn = level => { fns[level] = (...args) => this.logger[level](`[${namespace}] ${args.join(' ')}`) }
const createLogFn = level => { this[level] = msg => this.logger[level](msg) }
LEVELS.forEach(createLogFn)
return fns

this.info('Logger initialised')
}

child (arg) {
const namespace = (typeof arg === 'string' ? arg : (isPlainObject(arg) ? arg.namespace : '')) || 'logger'
const opts = { namespace }
return this.logger.child(opts)
}

// addLogger (namespace = 'logger') {
// const fns = {}
// const createLogFn = level => { fns[level] = (...args) => this.logger[level](`[${namespace}] ${args.join(' ')}`) }
// LEVELS.forEach(createLogFn)
// return fns
// }

createLogger () {
if (this.shouldLog) {
// const opts = { level: this.level }
Expand All @@ -33,7 +44,13 @@ class Logger {
// return pino(opts, stream)

const streams = createMultistream(this.loggerOutputFilePath, this.level)
return pino({ level: this.level }, streams)
const hooks = {
logMethod (inputArgs, method, level) {
const msg = inputArgs.join(' ')
return method.apply(this, [msg])
}
}
return pino({ level: this.level, hooks }, streams)

// const transport = createTransport(this.loggerOutputFilePath, this.level)
// const logger = pino(transport)
Expand Down
2 changes: 1 addition & 1 deletion lib/plugin/components/services/storage/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const MemoryModel = require('./Memory-model')

class MemoryStorageService {
boot (options) {
this.logger = options.bootedServices.logger.addLogger('storage')
this.logger = options.bootedServices.logger.child('service:storage')
this.storageName = 'memory'
this.models = {}

Expand Down
2 changes: 1 addition & 1 deletion lib/plugin/components/services/tymly/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const _ = require('lodash')
class TymlyService {
boot (options) {
this.bootedServices = options.bootedServices || {}
this.logger = options.bootedServices.logger.addLogger('tymly-service')
this.logger = options.bootedServices.logger.child('service:tymly')
this.orderedServiceNames = options.parsedServices ? options.parsedServices.map(service => { return service.name }) : []
this.blueprintComponents = options.blueprintComponents
}
Expand Down
2 changes: 1 addition & 1 deletion lib/plugin/components/state-resources/finding/find-base.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class FindStateResourceBase {
}

init (resourceConfig, env) {
this.logger = env.bootedServices.logger.addLogger('finding')
this.logger = env.bootedServices.logger.child('stateResource:finding')

if (!this.name || !this.findFnName) {
throw boom.notFound('Unable to initialize FindStateResourceBase - not constructed properly')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
class TestService {
boot (options) {
const logger1 = options.bootedServices.logger.addLogger('test-service')
const logger1 = options.bootedServices.logger.child('test-service')

logger1.trace('This is a trace message')
logger1.trace('This', 'is', 'a', 'trace', 'message')
logger1.debug('This is a debug message')

const logger2 = options.bootedServices.logger.addLogger('testing')
const logger2 = options.bootedServices.logger.child({ namespace: 'testing' })

logger2.info('This is an info message')
logger2.warn('This is a warn message')

const logger3 = options.bootedServices.logger.addLogger()
const logger3 = options.bootedServices.logger.child()

logger3.error('This is an error message')
logger3.fatal('This is a fatal message')
Expand Down
12 changes: 6 additions & 6 deletions test/logger-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,37 +26,37 @@ function expectAllLevels (logs) {
expect(
logs.find(l => l.level === 10).msg
).to.eql(
'[test-service] This is a trace message'
'This is a trace message'
)

expect(
logs.find(l => l.level === 20).msg
).to.eql(
'[test-service] This is a debug message'
'This is a debug message'
)

expect(
logs.find(l => l.level === 30).msg
).to.eql(
'[testing] This is an info message'
'This is an info message'
)

expect(
logs.find(l => l.level === 40).msg
).to.eql(
'[testing] This is a warn message'
'This is a warn message'
)

expect(
logs.find(l => l.level === 50).msg
).to.eql(
'[logger] This is an error message'
'This is an error message'
)

expect(
logs.find(l => l.level === 60).msg
).to.eql(
'[logger] This is a fatal message'
'This is a fatal message'
)
}

Expand Down

0 comments on commit 1fc8697

Please sign in to comment.