8000 manual merge of jumpgh-master (pull request #331) · chewax/log4js-node@1c67be5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1c67be5

Browse files
author
Gareth Jones
committed
manual merge of jumpgh-master (pull request log4js-node#331)
2 parents aeb03af + e725bec commit 1c67be5

File tree

3 files changed

+54
-15
lines changed

3 files changed

+54
-15
lines changed

lib/appenders/logstashUDP.js

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,40 @@
11
"use strict";
22
var layouts = require('../layouts')
33
, dgram = require('dgram')
4-
, util = require('util');
4+
, util = require('util')
5+
, _ = require('underscore');
56

67
function logstashUDP (config, layout) {
78
var udp = dgram.createSocket('udp4');
89
var type = config.logType ? config.logType : config.category;
9-
layout = layout || layouts.colouredLayout;
10+
layout = layout || layouts.dummyLayout;
1011
if(!config.fields) {
1112
config.fields = {};
1213
}
13-
return function(loggingEvent) {
14-
var logMessage = layout(loggingEvent);
15-
var fields = {};
16-
for(var i in config.fields) {
17-
fields[i] = config.fields[i];
18-
}
19-
fields['level'] = loggingEvent.level.levelStr;
14+
return function log(loggingEvent) {
15+
16+
/*
17+
https://gist.github.com/jordansissel/2996677
18+
{
19+
"message" => "hello world",
20+
"@version" => "1",
21+
"@timestamp" => "2014-04-22T23:03:14.111Z",
22+
"type" => "stdin",
23+
"host" => "hello.local"
24+
}
25+
@timestamp is the ISO8601 high-precision timestamp for the event.
26+
@version is the version number of this json schema
27+
Every other field is valid and fine.
28+
*/
29+
2030
var logObject = {
21-
'@timestamp': (new Date(loggingEvent.startTime)).toISOString(),
22-
type: type,
23-
message: logMessage,
24-
fields: fields,
25-
category: loggingEvent.logger.category
31+
"@version" : "1",
32+
"@timestamp" : (new Date(loggingEvent.startTime)).toISOString(),
33+
"type" : config.logType ? config.logType : config.category,
34+
"message" : layout(loggingEvent),
35+
"fields" : _.extend(config.fields,
36+
loggingEvent.data.length > 1 ? loggingEvent.data[1] : {},
37+
{'level':loggingEvent.level.levelStr})
2638
};
2739
sendLog(udp, config.host, config.port, logObject);
2840
};

lib/layouts.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ var dateFormat = require('./date_format')
1111
"coloured": function() { return colouredLayout; },
1212
"pattern": function (config) {
1313
return patternLayout(config && config.pattern, config && config.tokens);
14-
}
14+
},
15+
"dummy": function() { return dummyLayout; }
1516
}
1617
, colours = {
1718
ALL: "grey",
@@ -113,6 +114,10 @@ function messagePassThroughLayout (loggingEvent) {
113114
return formatLogData(loggingEvent.data);
114115
}
115116

117+
function dummyLayout(loggingEvent) {
118+
return loggingEvent.data[0];
119+
}
120+
116121
/**
117122
* PatternLayout
118123
* Format for specifiers is %[padding].[truncation][field]{[format]}
@@ -336,6 +341,7 @@ module.exports = {
336341
patternLayout: patternLayout,
337342
colouredLayout: colouredLayout,
338343
coloredLayout: colouredLayout,
344+
dummyLayout: dummyLayout,
339345
addLayout: function(name, serializerGenerator) {
340346
layoutMakers[name] = serializerGenerator;
341347
},

test/logstashUDP-test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,26 @@ vows.describe('logstashUDP appender').addBatch({
103103
assert.equal(json.type, 'myLogger');
104104
assert.equal(JSON.stringify(json.fields), JSON.stringify({'level': 'TRACE'}));
105105
}
106+
},
107+
108+
'when extra fields provided': {
109+
topic: function() {
110+
var setup = setupLogging('myLogger', {
111+
"host": "127.0.0.1",
112+
"port": 10001,
113+
"type": "logstashUDP",
114+
"category": "myLogger",
115+
"layout": {
116+
"type": "dummy"
117+
}
118+
});
119+
setup.logger.log('trace', 'Log event #1', {'extra1': 'value1', 'extra2': 'value2'});
120+
return setup;
121+
},'they should be added to fields structure': function (topic) {
122+
var json = JSON.parse(topic.results.buffer.toString());
123+
var< 50F6 /span> fields = {'extra1': 'value1', 'extra2': 'value2', 'level': 'TRACE'};
124+
assert.equal(JSON.stringify(json.fields), JSON.stringify(fields));
125+
}
106126
}
127+
107128
}).export(module);

0 commit comments

Comments
 (0)
0