/
logFacesAppender.js
58 lines (52 loc) · 1.99 KB
/
logFacesAppender.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* logFaces appender sends JSON formatted log events to logFaces server UDP receivers.
* Events contain the following properties:
* - application name (taken from configuration)
* - host name (taken from underlying os)
* - time stamp
* - level
* - logger name (e.g. category)
* - thread name (current process id)
* - message text
*/
"use strict";
var dgram = require('dgram'),
layouts = require('../layouts'),
os = require('os'),
process = require('process'),
util = require('util');
function logFacesAppender (config, layout) {
var lfsSock = dgram.createSocket('udp4');
var host = os.hostname().toString();
var app = config.application ? config.application : "";
return function log(loggingEvent) {
var lfsEvent = {
a: app, // application name
h: host, // this host name
t: loggingEvent.startTime.getTime(), // time stamp
p: loggingEvent.level.levelStr, // level (priority)
g: loggingEvent.categoryName, // logger name
r: process.pid, // thread (process id)
m: layout(loggingEvent) // message text
};
var buffer = new Buffer(JSON.stringify(lfsEvent));
var lfsHost = config.remoteHost || "127.0.0.1";
var lfsPort = config.port || 55201;
lfsSock.send(buffer, 0, buffer.length, lfsPort, lfsHost, function(err, bytes) {
if(err) {
console.error("log4js.logFacesAppender send to %s:%d failed, error: %s",
config.host, config.port, util.inspect(err));
}
});
};
}
function configure(config) {
var layout;
if (config.layout)
layout = layouts.layout(config.layout.type, config.layout);
else
layout = layouts.layout("pattern", {"type": "pattern", "pattern": "%m"});
return logFacesAppender(config, layout);
}
exports.appender = logFacesAppender;
exports.configure = configure;