@@ -0,0 +1 @@ | |||
node_modules |
@@ -0,0 +1,56 @@ | |||
# 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 |
@@ -0,0 +1,77 @@ | |||
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); | |||
} |
@@ -0,0 +1,18 @@ | |||
{ | |||
"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" | |||
} | |||
} |