2 * logFaces appender sends JSON formatted log events to logFaces server UDP receivers.
3 * Events contain the following properties:
4 * - application name (taken from configuration)
5 * - host name (taken from underlying os)
8 * - logger name (e.g. category)
9 * - thread name (current process id)
14 var dgram = require('dgram'),
15 layouts = require('../layouts'),
17 util = require('util');
20 var process = require('process');
23 //this module is optional as it may not be available
24 //in older versions of node.js, so ignore if it failes to load
27 function logFacesAppender (config, layout) {
28 var lfsSock = dgram.createSocket('udp4');
31 if(os && os.hostname())
32 localhost = os.hostname().toString();
35 if(process && process.pid)
38 return function log(loggingEvent) {
40 a: config.application || "", // application name
41 h: localhost, // this host name
42 t: loggingEvent.startTime.getTime(), // time stamp
43 p: loggingEvent.level.levelStr, // level (priority)
44 g: loggingEvent.categoryName, // logger name
45 r: pid, // thread (process id)
46 m: layout(loggingEvent) // message text
49 var buffer = new Buffer(JSON.stringify(lfsEvent));
50 var lfsHost = config.remoteHost || "127.0.0.1";
51 var lfsPort = config.port || 55201;
52 lfsSock.send(buffer, 0, buffer.length, lfsPort, lfsHost, function(err, bytes) {
54 console.error("log4js.logFacesAppender send to %s:%d failed, error: %s",
55 config.host, config.port, util.inspect(err));
61 function configure(config) {
64 layout = layouts.layout(config.layout.type, config.layout);
66 layout = layouts.layout("pattern", {"type": "pattern", "pattern": "%m"});
67 return logFacesAppender(config, layout);
70 exports.appender = logFacesAppender;
71 exports.configure = configure;