Skip to content

Commit 905fee1

Browse files
committed
- do not send logs if global is OFF
1 parent 97312ac commit 905fee1

File tree

4 files changed

+65
-12
lines changed

4 files changed

+65
-12
lines changed

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ class Backendless {
146146

147147
app.__removeService('LocalCache')
148148

149-
const loggingConfig = Object.assign({ loadLevels: true, defaultLevel: 'all', levels: {} }, config.logging)
149+
const loggingConfig = Object.assign({ loadLevels: true, globalLevel: 'all', levels: {} }, config.logging)
150150

151151
if (app.__hasService('Logging')) {
152152
app.Logging.reset()

src/logging/index.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ export default class Logging {
1919
this.levels = config.levels
2020
}
2121

22-
if (config.defaultLevel) {
23-
this.defaultLevel = config.defaultLevel
22+
if (config.globalLevel) {
23+
this.globalLevel = config.globalLevel
2424
}
2525

2626
if (config.loadLevels) {
@@ -30,7 +30,7 @@ export default class Logging {
3030

3131
reset() {
3232
this.levels = {}
33-
this.defaultLevel = 'all'
33+
this.globalLevel = 'all'
3434
this.loggers = {}
3535
this.messages = []
3636
this.numOfMessages = 10
@@ -41,12 +41,16 @@ export default class Logging {
4141
loadLoggingLevels() {
4242
this.app.request
4343
.get({ url: this.app.urls.loggingLevels() })
44-
.then(loggers => {
45-
loggers.forEach(logger => {
46-
this.levels[logger.name] = logger.level
44+
.then(loggersList => {
45+
const loggers = {}
46+
47+
loggersList.forEach(logger => {
48+
loggers[logger.name] = logger.level
4749
})
4850

49-
this.defaultLevel = this.levels[GLOBAL_LOGGER_NAME] || this.defaultLevel
51+
const globalLevel = loggers[GLOBAL_LOGGER_NAME]
52+
53+
this.setConfig({ loggers, globalLevel })
5054
})
5155
.catch(error => {
5256
// eslint-disable-next-line no-console

src/logging/logger.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,19 @@ export default class Logger {
4747
}
4848

4949
min(level) {
50-
const configuredLevel = this.logging.levels[this.name] || this.logging.defaultLevel
50+
level = level.toLowerCase()
5151

52-
return LogLevelPriorities[configuredLevel.toLowerCase()] >= LogLevelPriorities[level.toLowerCase()]
52+
const globalLevel = this.logging.globalLevel
53+
const loggerLevel = this.logging.levels[this.name]
54+
55+
if (globalLevel && LogLevelPriorities[globalLevel.toLowerCase()] < LogLevelPriorities[level]) {
56+
return false
57+
}
58+
59+
if (!loggerLevel) {
60+
return true
61+
}
62+
63+
return LogLevelPriorities[loggerLevel.toLowerCase()] >= LogLevelPriorities[level]
5364
}
5465
}

test/unit/specs/logging.js

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,8 @@ describe('<Logging>', function() {
557557
appId : APP_ID,
558558
apiKey : API_KEY,
559559
logging: {
560-
defaultLevel: 'info',
561-
levels : {
560+
globalLevel: 'info',
561+
levels : {
562562
[loggerName]: 'warn'
563563
}
564564
}
@@ -591,6 +591,44 @@ describe('<Logging>', function() {
591591
])
592592
})
593593

594+
it('should ignore all logs when global is OFF', async () => {
595+
prepareMockRequest([
596+
{
597+
name : loggerName,
598+
level: 'INFO'
599+
},
600+
{
601+
name : 'Global logger',
602+
level: 'OFF'
603+
}
604+
])
605+
606+
Backendless.initApp({
607+
appId : APP_ID,
608+
apiKey : API_KEY,
609+
logging: {
610+
globalLevel: 'info',
611+
levels : {
612+
[loggerName]: 'warn'
613+
}
614+
}
615+
})
616+
617+
await Utils.wait(1000)
618+
619+
logger.debug('debug message')
620+
logger.info('info message')
621+
logger.fatal('fatal message')
622+
logger.trace('trace message')
623+
624+
const unregisteredLogger = Backendless.Logging.getLogger('unregistered')
625+
626+
unregisteredLogger.info('should not be flushed')
627+
unregisteredLogger.error('should be flushed')
628+
629+
await Backendless.Logging.flush() // it won't send any request
630+
})
631+
594632
it('should not load log levels', async () => {
595633
Backendless.initApp({
596634
appId : APP_ID,

0 commit comments

Comments
 (0)