Dienstag, 12. November 2013

log4js-node-mongodb appender - Deutsch



Wir benutzen log4js-node für das Logging in unseren node.js Anwendungen. Log4js bringt schon eine Menge an Appendern mit, z.B. File oder Console. Da wir aber in unseren Anwendungen auch ein Audit brauchen, ist es wichtig,in eine Datenbank loggen zu können. Deshalb haben wir einen log4js Appender entwickelt, der in eine MongoDB loggen kann.

Installation

So wie immer…
$ npm install log4js-node-mongodb

Verwendung

Benutzt wird dieser Appender wie jeder andere log4js Appender. Man muss nur den connection-string zu der Mongo Datenbank übergeben. Die Standard collection, welche benutzt wird, ist log. Man kann einen string oder alle Arten von object loggen. Objekte werden so gespeichert wie sie sind, und nicht in einen string konvertiert.
var log4js = require('log4js'),
    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]);
Oder man benutzt die Methode configure.
var log4js = require('log4js');

log4js.configure({
    appenders: [
        {
            type: 'console'
        },
        {
            type: 'log4js-node-mongodb',
            connectionString: 'localhost:27017/logs',
            category: 'cheese'
        }
    ]
});
Die log Daten werden in folgendem Format gespeichert.
{
    _id: ObjectID,
    timestamp: loggingEvent.startTime,
    data: loggingEvent.data,
    level: loggingEvent.level,
    category: loggingEvent.logger.category
}
Hier ein paar Beispiele.
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 user no %d!', 'wayne', 10);

// saved as
{
    _id: new ObjectID(),
    timestamp: new Date(),
    data: 'Hello wayne, your are user no 10!',
    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'
}

Optionen

Es gibt ein paar Optionen welche man über das config object einstellen kann.

Name Typ Standardwert Benötigt
connectionString string undefined ja
collectionName string 'log' nein
write string 'fast' nein
layout string 'messagePassThroughLayout' nein

var log4js = require('log4js'),
    mongoAppender = require('log4js-node-mongodb');

log4js.addAppender(
    mongoAppender.appender({
        connectionString: 'localhost:27017/logs', 
        collectionName: 'audit', 
        write: 'safe'
    }),
    'audit'
);

var logger = log4js.getLogger('audit');
logger.info('User %s logged in', 'wayne');
Die komplette Dokumentation findet man in dem Github Repository.

1 Kommentar:

  1. We have done a complete evaluate of providers and support and found no complaints 카지노 사이트 filed in opposition to the on line casino. NetEnt’s emblem and graphic material is the company’s mental property and may not be not|will not be} copied, reproduced, distributed or displayed without written consent of NetEnt. NetEnt is a leading one} global gaming company that's dedicated to creating means forward for} gaming.

    AntwortenLöschen