Skip to content

Commit 14e16d6

Browse files
committed
[#367] Use internal LogLevel constants
1 parent 3c828c5 commit 14e16d6

File tree

6 files changed

+102
-46
lines changed

6 files changed

+102
-46
lines changed

lib/agent-builder.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
'use strict'
88

99
const { LogBuilder } = require('./utils/log/log-builder')
10-
const log = require('./utils/log/logger')
10+
const logger = require('./utils/log/logger')
1111
const dataSenderFactory = require('./client/data-sender-factory')
1212
const stringMetaService = require('./context/string-meta-service')
1313
const apiMetaService = require('./context/api-meta-service')
@@ -120,9 +120,9 @@ class AgentBuilder {
120120
if (!this.config) {
121121
this.config = getConfig()
122122
}
123-
log.setRootLogger(LogBuilder.createDefaultLogBuilder().setConfig(this.config).build())
123+
logger.setRootLogger(LogBuilder.createDefaultLogBuilder().setConfig(this.config).build())
124124

125-
const agent = new Agent(this.agentInfo, this.config, log)
125+
const agent = new Agent(this.agentInfo, this.config, logger)
126126
if (!this.dataSender) {
127127
this.dataSender = dataSenderFactory.create(this.config, this.agentInfo)
128128
}

lib/utils/log/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
'use strict'
88

9-
const LogBuilder = require('./log-builder')
9+
const { LogBuilder, LogLevel } = require('./log-builder')
1010
const logger = require('./logger')
1111

1212
module.exports = {
1313
LogBuilder,
14-
LogLevel: LogBuilder.LogLevel,
14+
LogLevel,
1515
logger
1616
}

lib/utils/log/log-builder.js

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,31 @@
66

77
'use strict'
88

9-
const levels = require('loglevel').levels
9+
class LogLevel {
10+
static get TRACE() {
11+
return 0
12+
}
13+
14+
static get DEBUG() {
15+
return 1
16+
}
17+
18+
static get INFO() {
19+
return 2
20+
}
21+
22+
static get WARN() {
23+
return 3
24+
}
25+
26+
static get ERROR() {
27+
return 4
28+
}
29+
30+
static get SILENT() {
31+
return 5
32+
}
33+
}
1034

1135
class Log {
1236
constructor(name, level) {
@@ -35,7 +59,7 @@ class LogBuilder {
3559

3660
constructor(name) {
3761
this.name = name
38-
this.level = levels.WARN
62+
this.level = LogLevel.WARN
3963
this.appenders = []
4064
}
4165

@@ -62,35 +86,35 @@ class LogBuilder {
6286
}
6387

6488
valueOfLoggingLevel(stringLogLevel) {
65-
if (!stringLogLevel) {
89+
if (typeof stringLogLevel !== 'string') {
6690
return null
6791
}
6892

69-
return levels[stringLogLevel]
93+
return LogLevel[stringLogLevel.toUpperCase()]
7094
}
7195

7296
logLevelDebug() {
73-
this.level = levels.DEBUG
97+
this.level = LogLevel.DEBUG
7498
return this
7599
}
76100

77101
logLevelInfo() {
78-
this.level = levels.INFO
102+
this.level = LogLevel.INFO
79103
return this
80104
}
81105

82106
logLevelWarn() {
83-
this.level = levels.WARN
107+
this.level = LogLevel.WARN
84108
return this
85109
}
86110

87111
logLevelError() {
88-
this.level = levels.ERROR
112+
this.level = LogLevel.ERROR
89113
return this
90114
}
91115

92116
logLevelSilent() {
93-
this.level = levels.SILENT
117+
this.level = LogLevel.SILENT
94118
return this
95119
}
96120

@@ -112,7 +136,9 @@ class LogBuilder {
112136
return this
113137
}
114138

115-
this.appenders.push({ ...appender }) // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_object_literals
139+
const newAppender = { ...appender } // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_object_literals
140+
Object.setPrototypeOf(newAppender, Object.getPrototypeOf(appender))
141+
this.appenders.push(newAppender)
116142
return this
117143
}
118144

@@ -127,5 +153,6 @@ class LogBuilder {
127153
}
128154

129155
module.exports = {
130-
LogBuilder
156+
LogBuilder,
157+
LogLevel
131158
}

lib/utils/log/logger.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
'use strict'
88

99
const loglevel = require('loglevel')
10-
const { LogBuilder } = require('./log-builder')
10+
const { LogBuilder, LogLevel: Level } = require('./log-builder')
1111

1212
class Logging {
1313
constructor(loglevel, log) {
@@ -28,7 +28,7 @@ class Logging {
2828

2929
const message = this.formatMessage(arguments)
3030
this.appenders.forEach(appender => {
31-
if (appender.loggingLevel <= this.loglevel.levels.DEBUG) {
31+
if (appender.loggingLevel <= Level.DEBUG) {
3232
appender.debug(message)
3333
}
3434
})
@@ -51,7 +51,7 @@ class Logging {
5151

5252

5353
isDebug() {
54-
return this.loglevel.getLevel() === loglevel.levels.DEBUG
54+
return this.loglevel.getLevel() === Level.DEBUG
5555
}
5656

5757
info() {
@@ -61,14 +61,14 @@ class Logging {
6161

6262
const message = this.formatMessage(arguments)
6363
this.appenders.forEach(appender => {
64-
if (appender.loggingLevel <= this.loglevel.levels.INFO) {
64+
if (appender.loggingLevel <= Level.INFO) {
6565
appender.info(message)
6666
}
6767
})
6868
}
6969

7070
isInfo() {
71-
return this.loglevel.getLevel() === this.loglevel.levels.INFO
71+
return this.loglevel.getLevel() === Level.INFO
7272
}
7373

7474
warn() {
@@ -78,7 +78,7 @@ class Logging {
7878

7979
const message = this.formatMessage(arguments)
8080
this.appenders.forEach(appender => {
81-
if (appender.loggingLevel <= this.loglevel.levels.WARN) {
81+
if (appender.loggingLevel <= Level.WARN) {
8282
appender.warn(message)
8383
}
8484
})
@@ -91,7 +91,7 @@ class Logging {
9191

9292
const message = this.formatMessage(arguments)
9393
this.appenders.forEach(appender => {
94-
if (appender.loggingLevel <= this.loglevel.levels.ERROR) {
94+
if (appender.loggingLevel <= Level.ERROR) {
9595
appender.error(message)
9696
}
9797
})

lib/utils/log/types.d.ts

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@
44
* Apache License v2.0
55
*/
66

7-
export declare enum LogLevel {
8-
TRACE = 0,
9-
DEBUG = 1,
10-
INFO = 2,
11-
WARN = 3,
12-
ERROR = 4,
13-
SILENT = 5
7+
export declare class LogLevel {
8+
static readonly TRACE: 0;
9+
static readonly DEBUG: 1;
10+
static readonly INFO: 2;
11+
static readonly WARN: 3;
12+
static readonly ERROR: 4;
13+
static readonly SILENT: 5;
1414
}
1515

16+
export declare type LogLevelNumbers = 0 | 1 | 2 | 3 | 4 | 5;
17+
1618
export declare interface Appender {
17-
loggingLevel: LogLevel | number;
19+
name: string;
20+
loggingLevel: LogLevelNumbers | number;
1821
debug(message: string): void;
1922
info(message: string): void;
2023
warn(message: string): void;
@@ -38,14 +41,25 @@ export declare class LogBuilder {
3841
}
3942

4043
export declare class Log {
41-
constructor(name: string, level: LogLevel | number);
44+
constructor(name: string, level: LogLevelNumbers | number);
4245

4346
getName(): string;
44-
getLevel(): LogLevel | number;
47+
getLevel(): LogLevelNumbers | number;
4548
getAppenders(): Array<Appender>;
4649
}
4750

48-
export declare class Logger {
51+
export declare interface Logging {
52+
debug(...args: any[]): void;
53+
info(...args: any[]): void;
54+
warn(...args: any[]): void;
55+
error(...args: any[]): void;
56+
57+
isDebug(): boolean;
58+
isInfo(): boolean;
59+
}
60+
61+
export declare class Logger implements Logging {
62+
4963
debug(...args: any[]): void;
5064
info(...args: any[]): void;
5165
warn(...args: any[]): void;
@@ -56,3 +70,18 @@ export declare class Logger {
5670

5771
getLogger(log: Log): Logger;
5872
}
73+
74+
export declare class ChildLogger implements Logging {
75+
name: string;
76+
77+
debug(...args: any[]): void;
78+
info(...args: any[]): void;
79+
warn(...args: any[]): void;
80+
error(...args: any[]): void;
81+
82+
isDebug(): boolean;
83+
isInfo(): boolean;
84+
}
85+
86+
export declare const logger: Logger;
87+

test/utils/log/logger.test.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88

99
const test = require('tape')
1010
const log = require('../../../lib/utils/log/logger')
11-
const { LogBuilder } = require('../../../lib/utils/log/log-builder')
12-
const levels = require('loglevel').levels
11+
const { LogBuilder, LogLevel } = require('../../../lib/utils/log/log-builder')
12+
const levels = LogLevel
1313

14-
test.skip('isDebug', (t) => {
14+
test('isDebug', (t) => {
1515
t.plan(4)
1616
t.equal(log.isDebug(), false, 'debug null')
1717

@@ -23,26 +23,26 @@ test.skip('isDebug', (t) => {
2323
t.equal(testLog2.isInfo(), false, 'same name logger is not info false')
2424
})
2525

26-
test.skip('isInfo', (t) => {
26+
test('isInfo', (t) => {
2727
t.plan(2)
2828
const testLog = log.getLogger(new LogBuilder('test1').logLevelInfo().build())
2929
t.equal(testLog.isInfo(), true, 'info')
3030
t.equal(testLog.isDebug(), false, 'debug false')
3131
})
3232

33-
test.skip('warn log', (t) => {
33+
test('warn log', (t) => {
3434
t.plan(1)
3535
const testLog = log.getLogger(new LogBuilder('test2').logLevelWarn().build())
3636
t.equal(testLog.loglevel.getLevel(), testLog.loglevel.levels.WARN, 'warn log level')
3737
})
3838

39-
test.skip('error log', (t) => {
39+
test('error log', (t) => {
4040
t.plan(1)
4141
const testLog = log.getLogger(new LogBuilder('test3').logLevelError().build())
4242
t.equal(testLog.loglevel.getLevel(), testLog.loglevel.levels.ERROR, 'error log level')
4343
})
4444

45-
test.skip('appenders', (t) => {
45+
test('appenders', (t) => {
4646
t.plan(2)
4747
const testLog = log.getLogger(new LogBuilder('test4').logLevelDebug().build())
4848
t.equal(testLog.appenders.length, 0, 'appenders length')
@@ -59,7 +59,7 @@ test.skip('appenders', (t) => {
5959
t.equal(testLog2.appenders.length, 1, 'appenders length with valid appender')
6060
})
6161

62-
test.skip('addAppender validation', (t) => {
62+
test('addAppender validation', (t) => {
6363
t.plan(8)
6464

6565
const validAppender = {
@@ -133,7 +133,7 @@ test.skip('addAppender validation', (t) => {
133133
t.equal(mixedLog.appenders.length, 1, 'Only valid appenders should be added in mixed scenario')
134134
})
135135

136-
test.skip('formatMessage', (t) => {
136+
test('formatMessage', (t) => {
137137
t.plan(4)
138138
const testLog = log.getLogger(new LogBuilder('test10').logLevelDebug().build())
139139

@@ -153,7 +153,7 @@ test.skip('formatMessage', (t) => {
153153
t.ok(message4.includes('[Object object]'), 'Circular references should be handled gracefully')
154154
})
155155

156-
test.skip('appender message forwarding', (t) => {
156+
test('appender message forwarding', (t) => {
157157
t.plan(7)
158158

159159
let capturedMessages = []
@@ -233,7 +233,7 @@ test.skip('appender message forwarding', (t) => {
233233
t.equal(capturedMessages.length, 0, 'SILENT level should process no messages')
234234
})
235235

236-
test.skip('guard clause - no appenders', (t) => {
236+
test('guard clause - no appenders', (t) => {
237237
t.plan(4)
238238

239239
const testLog = log.getLogger(new LogBuilder('test12').logLevelDebug().build())
@@ -310,7 +310,7 @@ test.skip('guard clause - no appenders', (t) => {
310310
t.equal(silentCallCount, 0, 'appender methods should never be called at SILENT level')
311311
})
312312

313-
test.skip('per-appender loggingLevel configuration', (t) => {
313+
test('per-appender loggingLevel configuration', (t) => {
314314
t.plan(6)
315315

316316
const warnAppenderMessages = []

0 commit comments

Comments
 (0)