pm2-gelf-json 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/app.js +26 -2
- package/package.json +3 -1
package/README.md
CHANGED
@@ -21,6 +21,8 @@ pm2 install pm2-gelf-json
|
|
21
21
|
```sh
|
22
22
|
$> pm2 set pm2-gelf-json:graylogHost graylog.myserver.org
|
23
23
|
$> pm2 set pm2-gelf-json:graylogPort 12201
|
24
|
+
$> pm2 set pm2-gelf-json:graylogLogParseErrors true
|
25
|
+
$> pm2 set pm2-gelf-json:graylogSplitLines true
|
24
26
|
$> pm2 set pm2-gelf-json:graylogFields '{"tag": "pm2"}'
|
25
27
|
$> pm2 set pm2-gelf-json:gelfAdapterName 'udp'
|
26
28
|
$> pm2 set pm2-gelf-json:gelfLogLevelsMapping '0:7,10:7,20:7,30:6,40:4,50:3,60:0'
|
package/app.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
const pm2 = require('pm2');
|
2
2
|
const pmx = require('pmx');
|
3
3
|
const gelf = require('gelf-pro');
|
4
|
+
const os = require('os');
|
4
5
|
|
5
6
|
const conf = pmx.initModule();
|
6
7
|
|
@@ -58,11 +59,14 @@ function toJSONSafe(data) {
|
|
58
59
|
try {
|
59
60
|
return JSON.parse(data)
|
60
61
|
} catch (e) {
|
62
|
+
if (conf.graylogLogParseErrors) {
|
63
|
+
logger('Error (toJSONSafe)', data, e);
|
64
|
+
}
|
61
65
|
return null
|
62
66
|
}
|
63
67
|
}
|
64
68
|
|
65
|
-
function
|
69
|
+
function logDataItem(data, explicitLevel) {
|
66
70
|
let level = explicitLevel || LEVELS.info
|
67
71
|
let logData = [data];
|
68
72
|
|
@@ -84,6 +88,26 @@ function logData(data, explicitLevel) {
|
|
84
88
|
(logMethods[level] || logMethods[LEVELS.info]).apply(gelf, logData)
|
85
89
|
}
|
86
90
|
|
91
|
+
function splitLines(data) {
|
92
|
+
if (data && typeof data === 'string') {
|
93
|
+
return data.split(os.EOL).filter(x => x.trim());
|
94
|
+
}
|
95
|
+
return [];
|
96
|
+
}
|
97
|
+
|
98
|
+
function logData(data, explicitLevel) {
|
99
|
+
try {
|
100
|
+
if (conf.graylogSplitLines) {
|
101
|
+
splitLines(data).forEach(s => logDataItem(s, explicitLevel))
|
102
|
+
} else {
|
103
|
+
logDataItem(data, explicitLevel)
|
104
|
+
}
|
105
|
+
} catch(e) {
|
106
|
+
logger('Error (logData)', data, e);
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
|
87
111
|
pm2.Client.launchBus((err, bus) => {
|
88
112
|
if (err) return logger(`Error: ${err.message}`, err);
|
89
113
|
|
@@ -96,7 +120,7 @@ pm2.Client.launchBus((err, bus) => {
|
|
96
120
|
|
97
121
|
bus.on('log:err', (log) => {
|
98
122
|
if (log.process.name === PM2_MODULE_NAME) return;
|
99
|
-
logData(log.data, LEVELS.error)
|
123
|
+
logData(log.data, LEVELS.error);
|
100
124
|
});
|
101
125
|
|
102
126
|
bus.on('reconnect attempt', () => {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "pm2-gelf-json",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.3",
|
4
4
|
"description": "PM2 logging to Graylog using gelf-pro with JSON support",
|
5
5
|
"main": "app.js",
|
6
6
|
"dependencies": {
|
@@ -20,6 +20,8 @@
|
|
20
20
|
"logging"
|
21
21
|
],
|
22
22
|
"config": {
|
23
|
+
"graylogLogParseErrors": false,
|
24
|
+
"graylogSplitLines": true,
|
23
25
|
"graylogPort": 12201,
|
24
26
|
"graylogHost": "127.0.0.1",
|
25
27
|
"gelfAdapterName": "udp",
|