Skip to content

Commit de985e1

Browse files
committed
ZMS-19: improve gelf logging exception consitency and add levels
1 parent d1a62b6 commit de985e1

File tree

14 files changed

+99
-38
lines changed

14 files changed

+99
-38
lines changed

app.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ let startSMTPInterfaces = done => {
8686
log.error('SMTP/' + smtpProxy.interface, 'Could not start ' + key + ' MTA server');
8787
log.loggelf({
8888
short_message: `${gelfCode('SMTP_START_FAILED')} Could not start SMTP interface`,
89+
level: 3,
8990
full_message: err && err.stack ? err.stack : undefined,
9091
_logger: 'SMTP/' + smtpProxy.interface,
9192
_smtp_interface: smtpProxy.interface,
@@ -113,6 +114,7 @@ startSMTPInterfaces(err => {
113114
log.error('QS', 'Could not start Queue server');
114115
log.loggelf({
115116
short_message: `${gelfCode('QUEUE_SERVER_START_FAILED')} Could not start queue server`,
117+
level: 3,
116118
full_message: err && err.stack ? err.stack : undefined,
117119
_logger: 'QS',
118120
_port: config.queueServer && config.queueServer.port,
@@ -129,6 +131,7 @@ startSMTPInterfaces(err => {
129131
log.error('API', 'Could not start API server');
130132
log.loggelf({
131133
short_message: `${gelfCode('API_START_FAILED')} Could not start API server`,
134+
level: 3,
132135
full_message: err && err.stack ? err.stack : undefined,
133136
_logger: 'API',
134137
_port: config.api && config.api.port,
@@ -148,6 +151,7 @@ startSMTPInterfaces(err => {
148151
log.error('Service', 'Failed to change group to "%s" (%s)', config.group, E.message);
149152
log.loggelf({
150153
short_message: `${gelfCode('SETGID_FAILED')} Failed to change group`,
154+
level: 3,
151155
full_message: E && E.stack ? E.stack : undefined,
152156
_logger: 'Service',
153157
_group: config.group
@@ -163,6 +167,7 @@ startSMTPInterfaces(err => {
163167
log.error('Service', 'Failed to change user to "%s" (%s)', config.user, E.message);
164168
log.loggelf({
165169
short_message: `${gelfCode('SETUID_FAILED')} Failed to change user`,
170+
level: 3,
166171
full_message: E && E.stack ? E.stack : undefined,
167172
_logger: 'Service',
168173
_user: config.user
@@ -176,6 +181,7 @@ startSMTPInterfaces(err => {
176181
log.error('Queue', 'Could not initialize sending queue');
177182
log.loggelf({
178183
short_message: `${gelfCode('QUEUE_INIT_FAILED')} Could not initialize sending queue`,
184+
level: 3,
179185
full_message: err && err.stack ? err.stack : undefined,
180186
_logger: 'Queue'
181187
});
@@ -267,6 +273,7 @@ process.on('uncaughtException', err => {
267273
log.error('Process', 'Uncaught exception');
268274
log.loggelf({
269275
short_message: `${gelfCode('UNCAUGHT_EXCEPTION')} Uncaught exception`,
276+
level: 2,
270277
full_message: err && err.stack ? err.stack : undefined,
271278
_logger: 'Process'
272279
});

lib/api-server.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,8 @@ class APIServer {
434434
log.error('FETCH', '%s LOADFAIL error="%s"', err.message);
435435
emitGelf({
436436
short_message: `${gelfCode('FETCH_LOAD_FAILED')} Failed to load message`,
437-
full_message: err && err.stack ? err.stack : undefined,
437+
level: 5,
438+
_stack: err && err.stack ? err.stack : undefined,
438439
_logger: 'FETCH',
439440
_message_id: req.params.id,
440441
_error: err.message

lib/bounces.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ function reloadBounces() {
1414
log.error('Bounces/' + process.pid, 'Could not load bounce rules. %s', E.message);
1515
emitGelf({
1616
short_message: `${gelfCode('BOUNCE_RULES_LOAD_FAILED')} Could not load bounce rules`,
17+
level: 3,
1718
full_message: E && E.stack ? E.stack : undefined,
1819
_logger: 'Bounces/' + process.pid,
1920
_file: path.join(__dirname, '..', 'config', 'bounces.txt'),
@@ -44,7 +45,8 @@ function reloadBounces() {
4445
log.error('Bounces/' + process.pid, 'Invalid bounce rule regex /%s/ on line %s', parts[0], nr + 1);
4546
emitGelf({
4647
short_message: `${gelfCode('BOUNCE_RULE_REGEX_INVALID')} Invalid bounce rule regex`,
47-
full_message: E && E.stack ? E.stack : undefined,
48+
level: 4,
49+
_stack: E && E.stack ? E.stack : undefined,
4850
_logger: 'Bounces/' + process.pid,
4951
_pattern: parts[0],
5052
_line: nr + 1,

lib/db.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ let getRedisConnection = callback => {
2424
log.error('Redis/' + process.pid, '%s', err.message);
2525
emitGelf({
2626
short_message: `${gelfCode('REDIS_CONNECTION_ERROR')} Redis connection error`,
27-
full_message: err && err.stack ? err.stack : undefined,
27+
level: 4,
28+
_stack: err && err.stack ? err.stack : undefined,
2829
_logger: 'Redis/' + process.pid,
2930
_pid: process.pid,
3031
_error: err.message

lib/ip-tools.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ class RedisCache {
4444
log.error(logKey, 'DNSREDISERR SET key=%s error=%s', key, args[0].message);
4545
emitGelf({
4646
short_message: `${gelfCode('DNS_REDIS_SET_FAILED')} Failed to set DNS cache`,
47-
full_message: args[0] && args[0].stack ? args[0].stack : undefined,
47+
level: 6,
48+
_stack: args[0] && args[0].stack ? args[0].stack : undefined,
4849
_logger: logKey,
4950
_key: key,
5051
_error: args[0].message
@@ -79,7 +80,8 @@ class RedisCache {
7980
log.error(logKey, 'DNSREDISERR GET key=%s error=%s', key, err.message);
8081
emitGelf({
8182
short_message: `${gelfCode('DNS_REDIS_GET_FAILED')} Failed to get DNS cache`,
82-
full_message: err && err.stack ? err.stack : undefined,
83+
level: 6,
84+
_stack: err && err.stack ? err.stack : undefined,
8385
_logger: logKey,
8486
_key: key,
8587
_error: err.message

lib/mail-drop.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ class MailDrop {
179179
log.error('Queue/' + process.pid, 'id=%s %s NOQUEUE store "%s" (%s)', envelope.sessionId, id, err.message, messageInfo.format());
180180
emitGelf({
181181
short_message: `${gelfCode('QUEUE_STORE_FAILED')} Failed to store queued message`,
182-
full_message: err && err.stack ? err.stack : undefined,
182+
level: 4,
183+
_stack: err && err.stack ? err.stack : undefined,
183184
_logger: 'Queue/' + process.pid,
184185
_session_id: envelope.sessionId,
185186
_message_id: id,
@@ -219,7 +220,8 @@ class MailDrop {
219220
log.error('Queue/' + process.pid, 'id=%s %s NOQUEUE meta "%s" (%s)', envelope.sessionId, id, err.message, messageInfo.format());
220221
emitGelf({
221222
short_message: `${gelfCode('QUEUE_META_FAILED')} Failed to store queue metadata`,
222-
full_message: err && err.stack ? err.stack : undefined,
223+
level: 4,
224+
_stack: err && err.stack ? err.stack : undefined,
223225
_logger: 'Queue/' + process.pid,
224226
_session_id: envelope.sessionId,
225227
_message_id: id,
@@ -251,7 +253,8 @@ class MailDrop {
251253
log.error('Queue/' + process.pid, 'id=%s %s NOQUEUE push "%s" (%s)', envelope.sessionId, id, err.message, messageInfo.format());
252254
emitGelf({
253255
short_message: `${gelfCode('QUEUE_PUSH_FAILED')} Failed to push message to queue`,
254-
full_message: err && err.stack ? err.stack : undefined,
256+
level: 4,
257+
_stack: err && err.stack ? err.stack : undefined,
255258
_logger: 'Queue/' + process.pid,
256259
_session_id: envelope.sessionId,
257260
_message_id: id,

lib/mail-queue.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,8 @@ class MailQueue {
642642
log.error('Delete', '%s.%s DELERROR %s', delivery.id, delivery.seq, err.message);
643643
emitGelf({
644644
short_message: `${gelfCode('QUEUE_DELETE_FAILED')} Failed to delete delivery`,
645-
full_message: err && err.stack ? err.stack : undefined,
645+
level: 4,
646+
_stack: err && err.stack ? err.stack : undefined,
646647
_logger: 'Delete',
647648
_delivery_id: delivery.id,
648649
_delivery_seq: delivery.seq,
@@ -868,7 +869,8 @@ class MailQueue {
868869
log.error('Queue', '%s.%s GET META %s', delivery.id, delivery.seq, err.message);
869870
emitGelf({
870871
short_message: `${gelfCode('QUEUE_META_FETCH_FAILED')} Failed to fetch delivery metadata`,
871-
full_message: err && err.stack ? err.stack : undefined,
872+
level: 5,
873+
_stack: err && err.stack ? err.stack : undefined,
872874
_logger: 'Queue',
873875
_delivery_id: delivery.id,
874876
_delivery_seq: delivery.seq,
@@ -905,7 +907,8 @@ class MailQueue {
905907
log.error('Queue', '%s.%s queue:delayed %s', deliveryEntry.id, deliveryEntry.seq, err.message);
906908
emitGelf({
907909
short_message: `${gelfCode('QUEUE_DELAYED_HOOK_FAILED')} queue:delayed hook failed`,
908-
full_message: err && err.stack ? err.stack : undefined,
910+
level: 5,
911+
_stack: err && err.stack ? err.stack : undefined,
909912
_logger: 'Queue',
910913
_delivery_id: deliveryEntry.id,
911914
_delivery_seq: deliveryEntry.seq,
@@ -1122,7 +1125,8 @@ class MailQueue {
11221125
log.error('GC', '[%ss] %s', timeDiff, err.message);
11231126
emitGelf({
11241127
short_message: `${gelfCode('QUEUE_GC_FAILED')} Garbage collection failed`,
1125-
full_message: err && err.stack ? err.stack : undefined,
1128+
level: 4,
1129+
_stack: err && err.stack ? err.stack : undefined,
11261130
_logger: 'GC',
11271131
_duration_s: timeDiff,
11281132
_error: err.message
@@ -1161,7 +1165,8 @@ class MailQueue {
11611165
log.error('Queue', 'Error fetching counters: %s', err.message);
11621166
emitGelf({
11631167
short_message: `${gelfCode('QUEUE_COUNTERS_FAILED')} Failed to fetch queue counters`,
1164-
full_message: err && err.stack ? err.stack : undefined,
1168+
level: 6,
1169+
_stack: err && err.stack ? err.stack : undefined,
11651170
_logger: 'Queue',
11661171
_error: err.message
11671172
});
@@ -1179,7 +1184,8 @@ class MailQueue {
11791184
log.error('Queue', 'Error fetching counters: %s', err.message);
11801185
emitGelf({
11811186
short_message: `${gelfCode('QUEUE_COUNTERS_FAILED')} Failed to fetch queue counters`,
1182-
full_message: err && err.stack ? err.stack : undefined,
1187+
level: 6,
1188+
_stack: err && err.stack ? err.stack : undefined,
11831189
_logger: 'Queue',
11841190
_error: err.message
11851191
});
@@ -1351,6 +1357,7 @@ class MailQueue {
13511357
log.error('Queue', 'Could not initialize database: %s', err.message);
13521358
emitGelf({
13531359
short_message: `${gelfCode('QUEUE_DB_INIT_FAILED')} Could not initialize queue database`,
1360+
level: 3,
13541361
full_message: err && err.stack ? err.stack : undefined,
13551362
_logger: 'Queue',
13561363
_error: err.message
@@ -1382,7 +1389,8 @@ class MailQueue {
13821389
log.error('mongo', 'Failed creating index %s %s. %s', indexpos, JSON.stringify(collection + '.' + index.index.name), err.message);
13831390
emitGelf({
13841391
short_message: `${gelfCode('QUEUE_INDEX_CREATE_FAILED')} Failed to create MongoDB index`,
1385-
full_message: err && err.stack ? err.stack : undefined,
1392+
level: 4,
1393+
_stack: err && err.stack ? err.stack : undefined,
13861394
_logger: 'mongo',
13871395
_index_pos: indexpos,
13881396
_collection: collection,

lib/receiver/smtp-proxy.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class SMTPProxy {
5858
log.error('SMTP/' + this.name + '/' + pid, 'Receiver process %s for %s exited with %s', childId, this.name, code || signal);
5959
emitGelf({
6060
short_message: `${gelfCode('SMTP_RECEIVER_EXITED')} Receiver process exited unexpectedly`,
61+
level: 4,
6162
_logger: 'SMTP/' + this.name + '/' + pid,
6263
_interface: this.name,
6364
_child_id: childId,
@@ -95,7 +96,8 @@ class SMTPProxy {
9596
log.error('SMTP/' + this.name, 'Failed setting up TLS. %s', err.message);
9697
emitGelf({
9798
short_message: `${gelfCode('SMTP_TLS_SETUP_FAILED')} Failed to set up TLS`,
98-
full_message: err && err.stack ? err.stack : undefined,
99+
level: 5,
100+
_stack: err && err.stack ? err.stack : undefined,
99101
_logger: 'SMTP/' + this.name,
100102
_interface: this.name,
101103
_error: err.message

lib/remote-queue.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class RemoteQueue {
3232
log.error('StoreStream', '%s STREAMERR %s', id, err.message);
3333
emitGelf({
3434
short_message: `${gelfCode('QUEUE_STORE_FAILED')} Failed to store message stream`,
35-
full_message: err && err.stack ? err.stack : undefined,
35+
level: 4,
36+
_stack: err && err.stack ? err.stack : undefined,
3637
_logger: 'StoreStream',
3738
_message_id: id,
3839
_error: err.message
@@ -124,6 +125,7 @@ class RemoteQueue {
124125
log.error('Queue/' + process.pid, 'Could not initialize database: %s', err.message);
125126
emitGelf({
126127
short_message: `${gelfCode('QUEUE_DB_INIT_FAILED')} Could not initialize queue database`,
128+
level: 3,
127129
full_message: err && err.stack ? err.stack : undefined,
128130
_logger: 'Queue/' + process.pid,
129131
_pid: process.pid,

0 commit comments

Comments
 (0)