Skip to content

Commit 3232c44

Browse files
committed
- fix flushing the log messages after the configured time interval elapses
1 parent ddf901e commit 3232c44

File tree

2 files changed

+65
-4
lines changed

2 files changed

+65
-4
lines changed

src/logging/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,17 @@ export default class Logging {
103103
}
104104

105105
checkMessagesLen() {
106-
if (this.messages.length >= this.numOfMessages) {
107-
this.startFlushInterval()
106+
if (this.checkMessagesLenTimer) {
107+
clearTimeout(this.checkMessagesLenTimer)
108108
}
109+
110+
this.checkMessagesLenTimer = setTimeout(() => {
111+
if (this.messages.length >= this.numOfMessages) {
112+
this.flush()
113+
} else {
114+
this.startFlushInterval()
115+
}
116+
}, 0)
109117
}
110118

111119
checkMessagesLimit() {

test/unit/specs/logging.js

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,59 @@ describe('<Logging>', function() {
4444
expect(logger === logger2).to.equal(true)
4545
})
4646

47+
it('flush by time (default is 1 second)', async () => {
48+
const req = prepareMockRequest({})
49+
50+
logger.debug('debug message')
51+
52+
await Utils.wait(1100)
53+
54+
expect(req).to.deep.include({
55+
method : 'PUT',
56+
path : `${APP_PATH}/log`,
57+
headers: { 'Content-Type': 'application/json' },
58+
})
59+
60+
expect(req.body).to.deep.equal([
61+
{
62+
'log-level': 'DEBUG',
63+
'logger' : 'MY_LOGGER_NAME',
64+
'message' : 'debug message',
65+
'timestamp': req.body[0].timestamp,
66+
}
67+
])
68+
})
69+
70+
it('flush by messages count (default is 10 messages)', async () => {
71+
const req = prepareMockRequest({})
72+
73+
for (let i = 1; i <= 11; i++) {
74+
logger.debug(`debug ${i}`)
75+
}
76+
77+
await Utils.wait(100)
78+
79+
expect(req).to.deep.include({
80+
method : 'PUT',
81+
path : `${APP_PATH}/log`,
82+
headers: { 'Content-Type': 'application/json' },
83+
})
84+
85+
expect(req.body.map(b => b.message)).to.deep.equal([
86+
'debug 1',
87+
'debug 2',
88+
'debug 3',
89+
'debug 4',
90+
'debug 5',
91+
'debug 6',
92+
'debug 7',
93+
'debug 8',
94+
'debug 9',
95+
'debug 10',
96+
'debug 11',
97+
])
98+
})
99+
47100
it('send many sync messages more than limit', async () => {
48101
const req1 = prepareMockRequest()
49102

@@ -53,7 +106,7 @@ describe('<Logging>', function() {
53106
logger.debug(`m-${i}`)
54107
}
55108

56-
await Backendless.Logging.flush()
109+
await Utils.wait(100)
57110

58111
expect(req1.body.map(b => b.message)).to.deep.equal([
59112
'm-1', 'm-2', 'm-3', 'm-4', 'm-5', 'm-6', 'm-7', 'm-8', 'm-9', 'm-10', 'm-11', 'm-12', 'm-13', 'm-14', 'm-15',
@@ -75,7 +128,7 @@ describe('<Logging>', function() {
75128
])
76129
})
77130

78-
it('send messages pool', async () => {
131+
it('flush messages pool', async () => {
79132
const req1 = prepareMockRequest()
80133

81134
Backendless.Logging.setLogReportingPolicy(100, 100)

0 commit comments

Comments
 (0)