A log4js-node log appender to write logs into MongoDB.
npm install log4js-node-mongodbstring or any kind of object. The objects are stored as they are and not converted to strings.
js
var log4js = require('log4js');
var mongoAppender = require('log4js-node-mongodb');
log4js.addAppender(
mongoAppender.appender({connectionString: 'localhost:27017/logs'}),
'cheese'
);
var logger = log4js.getLogger('cheese');
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
// log objects
logger.info({id: 1, name: 'wayne'});
logger.info([1, 2, 3]);
`
Or you can use the configure method.
`js
var log4js = require('log4js');
log4js.configure({
appenders: [
{
type: 'console'
},
{
type: 'log4js-node-mongodb',
connectionString: 'localhost:27017/logs',
category: 'cheese'
}
]
});
`
The log data is stored in the following format.
`js
{
_id: ObjectID,
timestamp: loggingEvent.startTime,
data: loggingEvent.data,
level: loggingEvent.level,
category: loggingEvent.logger.category
}
`
Here some examples.
`js
var log4js = require('log4js'),
mongoAppender = require('log4js-node-mongodb');
log4js.addAppender(
mongoAppender.appender(
{connectionString: 'localhost:27017/logs'}),
'audit'
);
var logger = log4js.getLogger('audit');
logger.debug('Hello %s, your are the %d user logged in!', 'wayne', 10);
// saved as
{
_id: new ObjectID(),
timestamp: new Date(),
data: 'Hello wayne, your are the 10 user logged in!',
level: {
level: 10000,
levelStr: 'DEBUG'
},
category: 'audit'
}
logger.info({id: 1, name: 'wayne'});
// saved as
{
_id: new ObjectID(),
timestamp: new Date(),
data: {
id: 1,
name: 'wayne'
},
level: {
level: 20000,
levelStr: 'INFO'
},
category: 'audit'
}
`
$3
There are some options which can by set through the config object.
#### connectionOptions
The connectionOptions object to pass to the mongo db client.
|
--- | ---
Type | object
Required | false
Default value | {}
`js
var log4js = require('log4js'),
mongoAppender = require('log4js-node-mongodb');
log4js.addAppender(
mongoAppender.appender({connectionString: 'localhost:27017/logs',
connectionOptions : {server: {ssl: false, sslValidate: false}}}),
'cheese'
);
`
#### connectionString
The connection-string to the mongo db.
|
--- | ---
Type | string
Required | true
Default value |
`js
var log4js = require('log4js'),
mongoAppender = require('log4js-node-mongodb');
log4js.addAppender(
mongoAppender.appender({connectionString: 'localhost:27017/logs'}),
'cheese'
);
`
#### collectionName
The name of the mongo db collection where the logs are stored.
|
--- | ---
Type | string
Required | false
Default value | 'log'
`js
var log4js = require('log4js'),
mongoAppender = require('log4js-node-mongodb');
log4js.addAppender(
mongoAppender.appender({
connectionString: 'localhost:27017/logs',
collectionName: 'audit'
}),
'cheese'
);
`
#### write
The write mode of the mongo db insert operation. With this option you have control over the write concern of mongo db.
|
--- | ---
Type | string
Required | false
Default value | 'fast'
There are 3 options available. The default value is 'fast'.
* | mongo options object | error logging
--- | --- | ---
fast | {w: 0} | no
normal | {w: 1} | yes
safe | {w: 1, journal: true} | yes
`js
var log4js = require('log4js'),
mongoAppender = require('log4js-node-mongodb');
// fast write mode
log4js.addAppender(
mongoAppender.appender({connectionString: 'localhost:27017/logs'}),
'cheese'
);
// normal write mode
log4js.addAppender(
mongoAppender.appender({
connectionString: 'localhost:27017/logs',
write: 'normal'
}),
'cheese'
);
// safe write mode
log4js.addAppender(
mongoAppender.appender({
connectionString: 'localhost:27017/logs',
write: 'safe'
}),
'cheese'
);
`
#### layout
The log4js-node layout which is used when logging a string. (log4js-node layouts)
|
--- | ---
Type | string
Required | false
Default value | 'messagePassThroughLayout'
`js
var log4js = require('log4js'),
mongoAppender = require('log4js-node-mongodb');
log4js.addAppender(
mongoAppender.appender({
connectionString: 'localhost:27017/logs',
layout: 'colored'
}),
'cheese'
);
`
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.
Release History
$3
* Update mongodb driver
$3
* Fix problem when saving data which includes mongodb ObjectID's
$3
* Add property connectionOptions` to configuration options