1.0.4 • Published 6 years ago

meta-logger v1.0.4

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

meta-logger

Lightweight logging library for NodeJS with support of facilities and multiple transports.

Usage

var logger = require("meta-logger");

//Setup targets
logger.toConsole({
	level: "debug",
	timestamp: true,
	colorize: true
}).toFile("demo.log", {
	level: "info",
	timestamp: true,
	facilities: [ "test" ]
}).toJsonFile("demo.json", {
	level: "warn"
});

//Logging without specifying facility
logger.log("info", "Hello %s", "world");
logger.debug("Hello %s", "debug");
logger.info("Hello %s", "info");
logger.warn("Hello %s", "warn");
logger.error("Hello %s", "error");

//Create facility shorthand
var facilityLogger = logger.facility("test");

//Log with facility prefix
facilityLogger.log("info", "Hello %s", "world");
facilityLogger.debug("Hello %s", "debug");
facilityLogger.info("Hello %s", "info");
facilityLogger.warn("Hello %s", "warn");
facilityLogger.error("Hello %s", "error");

Note: console target is set by default.

Configuring logging targets

Console

Prints log messages to stdout (console).

logger.toConsole({
	level: "debug",
	facilities: [...], //or null to accept all facilities
	timestamp: true,
	colorize: true,
	colors: {
		debug: 	logger.colors.cyan,
		info: 	logger.colors.white,
		warn: 	logger.colors.yellow,
		error: 	logger.colors.red
	}
});

Method toConsole overrides previous console target settings. You can use more console targets (for multiple configurations):

logger.to(new Logger.ConsoleTarget({
	///... options ...
}));

File

Append log messages to specified file.

Message is formatted same way as to console.

File target can be set for multiple files with different configurations.

logger.toFile(filename, {
	level: "debug",
	facilities: [...], //or null to accept all facilities
	timestamp: true
}).toFile(anotherFilename, {
	level: "error",
	timestamp: true,
	//...
});

JSON file

Append log messages to specified file in JSON format.

logger.toJsonFile(filename, {
	level: "debug",
	facilities: [...], //or null to accept all facilities
	timestamp: true
});

Log file has following format:

{},
{"timestamp":"2015-06-04T21:20:54.627Z","level":"warn","facility":null,"msg":["Hello %s","warn"]},
{"timestamp":"2015-06-04T21:20:54.629Z","level":"error","facility":"test","msg":["Hello %s","error"]}
...

Custom logging target

Custom target is defined by instance of simple object which implements log method and registered to logger via to method.

Following example shows how to define custom target:

var util = require("util");

var MyTarget = function(options){

	options = options || {};
	this.prefix = options.prefix || "";

};

MyTarget.prototype.log = function(level, facility, args){

	console.log(level, facility, this.prefix, util.format.apply(this, args));

};

logger.to(new MyTarget({
	prefix: "my-target"
}));

Following example shows how to inherit BaseTarget:

var MyTarget = function(options){

	options = options || {};
	this.prefix = options.prefix || "";

	logger.BaseTarget.call(this, options);

};

util.inherits(MyTarget, logger.BaseTarget);

MyLogger.prototype.write = function(level, facility, msg){

	console.log(level, facility, this.prefix, msg.join(" "));

};

Custom logging levels

Logging levels can be set by modifying logger.levels property.

logger.levels = {
	custom: 4,
	debug: 	3,
	info: 	2,
	warn: 	1,
	error: 	0
};

Logger object reference

logger = {

	//Colors library for console coloring
	colors: require("colors"),

	//Logging levels
	levels: {
		debug: 	3,
		info: 	2,
		warn: 	1,
		error: 	0
	},

	//Object contains registered targets
	targets: {},

	//Logging functions
	log: function(level, args...),
	debug: function(args...),
	info: function(args...),
	warn: function(args...),
	error: function(args...),

	//Facility shorthand
	facility: function(name){

		return {

			log: function(level, args...),
			debug: function(args...),
			info: function(args...),
			warn: function(args...),
			error: function(args...)

		};

	},

	//Target shorthands
	to: function(name, targetObject),
	toConsole: function(options),
	toFile: function(filename, options),
	toJsonFile: function(filename, options),

	//Target constructors
	BaseTarget: function(options),
	ConsoleTarget: function(options),
	FileTarget: function(filename, options),
	JsonFileTarget: function(filename, options)

};

License

This library is published under MIT license.

Copyright (c) 2015 Jiri Hybek, jiri.hybek@cryonix.cz

1.0.4

6 years ago

1.0.3

8 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago