mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
const redis = require('redis');
|
|
const util = require('util');
|
|
|
|
function redisAppender(config, layout) {
|
|
const host = config.host || '127.0.0.1';
|
|
const port = config.port || 6379;
|
|
const auth = config.pass ? { auth_pass: config.pass } : {};
|
|
const redisClient = redis.createClient(port, host, auth);
|
|
|
|
redisClient.on('error', (err) => {
|
|
if (err) {
|
|
console.error(`log4js.redisAppender - ${host}:${port} Error: ${util.inspect(err)}`);
|
|
}
|
|
});
|
|
|
|
const appender = function (loggingEvent) {
|
|
const message = layout(loggingEvent);
|
|
redisClient.publish(config.channel, message, (err) => {
|
|
if (err) {
|
|
console.error(`log4js.redisAppender - ${host}:${port} Error: ${util.inspect(err)}`);
|
|
}
|
|
});
|
|
};
|
|
|
|
appender.shutdown = (cb) => {
|
|
redisClient.quit();
|
|
if (cb) cb();
|
|
};
|
|
|
|
return appender;
|
|
}
|
|
|
|
function configure(config, layouts) {
|
|
let layout = layouts.messagePassThroughLayout;
|
|
if (config.layout) {
|
|
layout = layouts.layout(config.layout.type, config.layout);
|
|
}
|
|
|
|
return redisAppender(config, layout);
|
|
}
|
|
|
|
module.exports.configure = configure;
|