Browse Source

initial commit

master
mort 8 years ago
commit
f69ffd2546
4 changed files with 152 additions and 0 deletions
  1. 1
    0
      .gitignore
  2. 56
    0
      README.md
  3. 77
    0
      index.js
  4. 18
    0
      package.json

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
node_modules

+ 56
- 0
README.md View File

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

+ 77
- 0
index.js View File

@@ -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);
}

+ 18
- 0
package.json View File

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

Loading…
Cancel
Save