node_modules |
# Logger | |||||
Logger is a very simple logging library for node.js. | |||||
## Installation | |||||
Install like any other NPM library: | |||||
``` | |||||
npm install --save logger | |||||
``` | |||||
## Usage | |||||
``` | |||||
var logger = require("logger"); | |||||
``` | |||||
Logger has 4 methods for logging: | |||||
``` | |||||
logger.info("foo"); // yyyy/mm/dd HH:MM:SS INFO: foo | |||||
logger.notice("foo"); // yyyy/mm/dd HH:MM:SS NOTICE: foo | |||||
logger.warn("foo"); // yyyy/mm/dd HH:MM:SS WARNING: foo | |||||
logger.die("foo"); // yyyy/mm/dd HH:MM:SS ERROR: foo | |||||
``` | |||||
After logger.die, the process will immediately exit. | |||||
If an error object is passed instead of a string, a stack trace will be printed, like this: | |||||
``` | |||||
logger.notice(new Error("foo")); | |||||
// yyyy/mm/dd HH:MM:SS NOTICE: foo - stack trace: | |||||
// Trace: [Error: foo] | |||||
// <stack trace> | |||||
``` | |||||
To set a different color theme, use `setTheme`: | |||||
``` | |||||
logger.setTheme({ | |||||
timestamp: "green" | |||||
}) | |||||
``` | |||||
The available properties for setTheme is: | |||||
* timestamp: timestamp, default: "blue" | |||||
* level_0: logger.info, default: "grey" | |||||
* level_1: logger.notice, default: "yellow" | |||||
* level_2: logger.warn, default: "red" | |||||
* level_3: logger.die, default: ["bold", "red"] | |||||
The available values for themes are listed here: npmjs.com/package/colors |
var colors = require("colors"); | |||||
var theme = { | |||||
timestamp: "blue", | |||||
level_0: "grey", | |||||
level_1: "yellow", | |||||
level_2: "red", | |||||
level_3: ["bold", "red"] | |||||
} | |||||
colors.setTheme(theme); | |||||
var strs = [ | |||||
"INFO:", | |||||
"NOTICE:", | |||||
"WARNING:", | |||||
"ERROR:" | |||||
] | |||||
function pad(str, length, padChar) { | |||||
if (typeof str === "number") | |||||
str = str.toString(); | |||||
var missing = (length - str.length) + 1; | |||||
if (missing <= 0) | |||||
return str; | |||||
return new Array(missing).join(padChar) + str; | |||||
} | |||||
function prefix(level) { | |||||
var date = new Date(); | |||||
var yyyy = pad(date.getFullYear(), 4, "0"); | |||||
var mm = pad(date.getMonth() + 1, 2, "0"); | |||||
var dd = pad(date.getDate(), 2, "0"); | |||||
var HH = pad(date.getHours(), 2, "0"); | |||||
var MM = pad(date.getMinutes(), 2, "0"); | |||||
var SS = pad(date.getSeconds(), 2, "0"); | |||||
var dateStr = (yyyy+"/"+mm+"/"+dd+" "+HH+":"+MM+":"+SS).timestamp; | |||||
var levelStr = strs[level]["level_"+level]; | |||||
return dateStr+" "+levelStr+" "; | |||||
} | |||||
function log(level, msg) { | |||||
if (typeof msg === "string") { | |||||
console.log( | |||||
prefix(level)+ | |||||
msg["level_"+level] | |||||
); | |||||
} else { | |||||
console.log( | |||||
prefix(level)+ | |||||
(msg.toString()+" - stack trace:")["level_"+level] | |||||
); | |||||
console.trace(msg); | |||||
} | |||||
} | |||||
exports.info = function(msg) { log(0, msg) }; | |||||
exports.notice = function(msg) { log(1, msg) }; | |||||
exports.warn = function(msg) { log(2, msg) }; | |||||
exports.die = function(err, exitCode) { | |||||
log(3, err); | |||||
process.exit(exitCode || 1); | |||||
} | |||||
exports.setTheme = function(obj) { | |||||
for (var i in obj) { | |||||
theme[i] = obj[i]; | |||||
} | |||||
colors.setTheme(theme); | |||||
} |
{ | |||||
"name": "logger", | |||||
"version": "1.0.0", | |||||
"description": "Tiny logging library for node.js.", | |||||
"main": "index.js", | |||||
"scripts": { | |||||
"test": "echo \"Error: no test specified\" && exit 1" | |||||
}, | |||||
"author": { | |||||
"name": "Martin Dørum Nygaard", | |||||
"email": "martid0311@gmail.com", | |||||
"url": "http://mort.coffee" | |||||
}, | |||||
"license": "GPLv2", | |||||
"dependencies": { | |||||
"colors": "^1.1.2" | |||||
} | |||||
} |