| @@ -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" | |||
| } | |||
| } | |||