Skip to content

Commit

Permalink
[pinpoint-apm#117] logger adaptor
Browse files Browse the repository at this point in the history
  • Loading branch information
feelform committed Oct 17, 2022
1 parent 72b8a5c commit 1d39d6f
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 2 deletions.
47 changes: 47 additions & 0 deletions lib/utils/log/logger-output-adaptor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* Pinpoint Node.js Agent
* Copyright 2022-present NAVER Corp.
* Apache License v2.0
*/

'use strict'

class LoggerOutputAdaptor {
constructor(output) {
this.output = output
}

debug(message) {
if (!this.output || typeof this.output.debug != 'function') {
console.error("The Adaptor doesn't has the debug function.")
return
}
this.output.debug(message)
}

info(message) {
if (!this.output || typeof this.output.info != 'function') {
console.error("The Adaptor doesn't has the info function.")
return
}
this.output.info(message)
}

warn(message) {
if (!this.output || typeof this.output.warn != 'function') {
console.error("The Adaptor doesn't has the warn function.")
return
}
this.output.warn(message)
}

error(message) {
if (!this.output || typeof this.output.error != 'function') {
console.error("The Adaptor doesn't has the warn function.")
return
}
this.output.error(message)
}
}

module.exports = LoggerOutputAdaptor
10 changes: 9 additions & 1 deletion lib/utils/logger2.js → lib/utils/log/logger2.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,26 @@

const LogLevel = require('loglevel')

class LoggerQueue {
constructor() {
this.queue = []
}
}

class Logger {
constructor() {
this.queue = new LoggerQueue()
this.LOG_LEVEL = LogLevel.levels
this.DEFAULT_LEVEL = this.LOG_LEVEL.SILENT
this.DEFAULT_NAME = 'default_logger'
}

static get DebugBuilder() {
return class Builder {
constructor(name) {
constructor(name, adaptor) {
this.name = name
this.level = LogLevel.levels.DEBUG
this.adaptor = adaptor
}
}
}
Expand Down
67 changes: 67 additions & 0 deletions test/utils/log/logger-output-adaptor.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* Pinpoint Node.js Agent
* Copyright 2020-present NAVER Corp.
* Apache License v2.0
*/

'use strict'

const test = require('tape')
const LoggerOutputAdaptor = require('../../../lib/utils/log/logger-output-adaptor')

test('Adaptor method duck typing validation', (t) => {
let actual = new LoggerOutputAdaptor({
debug: function(message) {
this.actualMessage = message
}
})
actual.debug('message')
t.equal(actual.output.actualMessage, 'message')

let actualUnsafe = new LoggerOutputAdaptor({
})
actualUnsafe.debug('message')
t.false(actualUnsafe.output.debug, 'this.output.debug is undefined')


actual = new LoggerOutputAdaptor({
info: function(message) {
this.actualMessage = message
}
})
actual.info('message2')
t.equal(actual.output.actualMessage, 'message2')

actualUnsafe = new LoggerOutputAdaptor({
})
actualUnsafe.info('message')
t.false(actualUnsafe.output.info, 'this.output.info is undefined')

actual = new LoggerOutputAdaptor({
warn: function(message) {
this.actualMessage = message
}
})
actual.warn('message3')
t.equal(actual.output.actualMessage, 'message3')

actualUnsafe = new LoggerOutputAdaptor({
})
actualUnsafe.warn('message')
t.false(actualUnsafe.output.warn, 'this.output.warn is undefined')

actual = new LoggerOutputAdaptor({
error: function(message) {
this.actualMessage = message
}
})
actual.error('message4')
t.equal(actual.output.actualMessage, 'message4')

actualUnsafe = new LoggerOutputAdaptor({
})
actualUnsafe.error('message')
t.false(actualUnsafe.output.error, 'this.output.error is undefined')

t.end()
})
15 changes: 15 additions & 0 deletions test/utils/log/logger.integration.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* Pinpoint Node.js Agent
* Copyright 2022-present NAVER Corp.
* Apache License v2.0
*/

'use strict'
const test = require('tape')
const LoggerOutputAdaptor = require('../../../lib/utils/log/logger-output-adaptor')
const Logger = require('../../lib/utils/log/logger')

test('Logger Adaptor', (t) => {
let actual = Logger.DebugBuilder('debug', new LoggerOutputAdaptor())
t.end()
})
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

const test = require('tape')
const log = require('../../lib/utils/logger')
const Logger = require('../../lib/utils/logger2')
const Logger = require('../../lib/utils/log/logger2')
const LogLevel = require('loglevel')

test('isDebug', (t) => {
Expand Down

0 comments on commit 1d39d6f

Please sign in to comment.