log-likho 1.2.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTE.md +3 -3
- package/README.md +63 -14
- package/assets/image.png +0 -0
- package/index.js +4 -2
- package/package.json +10 -4
- package/src/logger.js +60 -0
- package/src/{create-logger.js → simple-logger.js} +5 -7
- package/src/utils/colors.js +7 -0
- package/test/logger.spec.js +16 -0
- package/test/options.spec.js +4 -4
package/CONTRIBUTE.md
CHANGED
package/README.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# log-likho
|
|
2
|
-
|
|
2
|
+
A console.log, that logs on console as well as on a file in `logs/` folder.
|
|
3
|
+
Plus an advance logger with `INFO`, `WARN`, `ERROR` & `FATAL` modes.
|
|
3
4
|
|
|
5
|
+
### Simple Logger Usage
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
```
|
|
7
|
+
```sh
|
|
7
8
|
npm install log-likho
|
|
8
9
|
```
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
Replace the normal console.log with this "file + console" log function.
|
|
11
12
|
|
|
12
13
|
```js
|
|
13
14
|
console.log = require('log-likho')();
|
|
@@ -15,9 +16,9 @@ console.log = require('log-likho')();
|
|
|
15
16
|
console.log('testing 1');
|
|
16
17
|
```
|
|
17
18
|
|
|
18
|
-
This should do normal log to console but also write logs real-time to the logs folder
|
|
19
|
+
This should do normal log to console but also write logs real-time to the `logs/` folder
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
##### Log in append mode
|
|
21
22
|
|
|
22
23
|
```js
|
|
23
24
|
console.log = require('log-likho')({mode: 'a'});
|
|
@@ -26,25 +27,73 @@ console.log('testing 1');
|
|
|
26
27
|
```
|
|
27
28
|
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
##### With all the options
|
|
30
31
|
|
|
31
32
|
```js
|
|
32
|
-
const
|
|
33
|
+
const simple_logger = require('log-likho');
|
|
33
34
|
|
|
34
|
-
console.log =
|
|
35
|
+
console.log = simple_logger({
|
|
35
36
|
logs_folder: './my_folder',
|
|
36
37
|
mode: "a",
|
|
37
38
|
})
|
|
38
39
|
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
This will create log files in `my_folder` and will not
|
|
42
|
+
This will create log files in `my_folder` and will not overwrite it with new logs on next executions.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## Advance logger
|
|
47
|
+
|
|
48
|
+
🚀 Features
|
|
49
|
+
|
|
50
|
+
✅ Supports info, warn, error, fatal, and log levels
|
|
51
|
+
|
|
52
|
+
✅ Colored terminal output for easy debugging
|
|
53
|
+
|
|
54
|
+
✅ Custom log folder and file mode (append/overwrite)
|
|
55
|
+
|
|
56
|
+
✅ No external dependencies
|
|
57
|
+
|
|
58
|
+
### Usage
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
npm install log-likho
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
To use the logger.
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
const { create_logger } = require("log-likho");
|
|
68
|
+
|
|
69
|
+
const logger = create_logger({
|
|
70
|
+
logs_folder: "./logs", // default: './logs'
|
|
71
|
+
mode: "a" // append mode; use 'w' for overwrite
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
logger.info("This is an info message");
|
|
75
|
+
logger.warn("This is a warning");
|
|
76
|
+
logger.error("This is an error");
|
|
77
|
+
logger.fatal("This is a fatal error");
|
|
78
|
+
logger.log("This is a plain log message");
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
##### Output
|
|
82
|
+
|
|
83
|
+

|
|
42
84
|
|
|
85
|
+
| Level | Terminal Color |
|
|
86
|
+
| ----- | ------------------ |
|
|
87
|
+
| INFO | Cyan |
|
|
88
|
+
| WARN | Yellow |
|
|
89
|
+
| ERROR | Red |
|
|
90
|
+
| FATAL | Magenta |
|
|
91
|
+
| LOG | Default (no color) |
|
|
43
92
|
|
|
44
93
|
|
|
45
94
|
## Default options
|
|
46
95
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
`logs_folder` |
|
|
50
|
-
`mode`
|
|
96
|
+
| Option | Type | Default | Description |
|
|
97
|
+
| ------------- | ------ | -------- | ------------------------------------------------------ |
|
|
98
|
+
| `logs_folder` | String | `./logs` | Directory to store log files |
|
|
99
|
+
| `mode` | String | `"a"` | File write mode: `"a"` for append, `"w"` for overwrite |
|
package/assets/image.png
ADDED
|
Binary file
|
package/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const simple_logger = require("./src/simple-logger");
|
|
2
|
+
const create_logger = require("./src/logger");
|
|
2
3
|
|
|
3
|
-
module.exports =
|
|
4
|
+
module.exports = simple_logger;
|
|
5
|
+
module.exports.create_logger = create_logger;
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "log-likho",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "A simple file + colored stdout logger for Node.js apps.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "node ./test/default.spec.js && node ./test/options.spec.js"
|
|
7
|
+
"test": "node ./test/default.spec.js && node ./test/options.spec.js && node ./test/logger.spec.js",
|
|
8
|
+
"clean": "rm -rf logs simple-logs logger-logs"
|
|
8
9
|
},
|
|
9
10
|
"repository": {
|
|
10
11
|
"type": "git",
|
|
@@ -24,7 +25,12 @@
|
|
|
24
25
|
"logging",
|
|
25
26
|
"one",
|
|
26
27
|
"line",
|
|
27
|
-
"logger"
|
|
28
|
+
"logger",
|
|
29
|
+
"warn",
|
|
30
|
+
"info",
|
|
31
|
+
"fatal",
|
|
32
|
+
"error",
|
|
33
|
+
"colors"
|
|
28
34
|
],
|
|
29
35
|
"author": "Neetish Raj",
|
|
30
36
|
"license": "MIT",
|
package/src/logger.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const util = require("util");
|
|
3
|
+
|
|
4
|
+
const COLORS = require("./utils/colors");
|
|
5
|
+
const default_options = require("./log-options");
|
|
6
|
+
const { dd_month_yyyy_day } = require("./utils/date-formats");
|
|
7
|
+
|
|
8
|
+
const log_stdout = process.stdout;
|
|
9
|
+
|
|
10
|
+
const create_logger = (options = {}) => {
|
|
11
|
+
const final_options = {
|
|
12
|
+
...default_options,
|
|
13
|
+
...options,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const { logs_folder, mode } = final_options;
|
|
17
|
+
|
|
18
|
+
if (!fs.existsSync(logs_folder)) {
|
|
19
|
+
fs.mkdirSync(logs_folder);
|
|
20
|
+
console.log(`Created '${logs_folder}' folder`);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const log_output_path = `${logs_folder}/${dd_month_yyyy_day()}.log`;
|
|
24
|
+
const log_file = fs.createWriteStream(log_output_path, { flags: mode });
|
|
25
|
+
|
|
26
|
+
function formatMessage(level, message) {
|
|
27
|
+
const timestamp = new Date().toTimeString().substring(0, 8);
|
|
28
|
+
return `[${timestamp}] [${level}] ${util.format(message)}\n`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
info: (msg) => {
|
|
33
|
+
const formatted = formatMessage("INFO", msg);
|
|
34
|
+
log_file.write(formatted);
|
|
35
|
+
log_stdout.write(COLORS.INFO + formatted + COLORS.RESET);
|
|
36
|
+
},
|
|
37
|
+
warn: (msg) => {
|
|
38
|
+
const formatted = formatMessage("WARN", msg);
|
|
39
|
+
log_file.write(formatted);
|
|
40
|
+
log_stdout.write(COLORS.WARN + formatted + COLORS.RESET);
|
|
41
|
+
},
|
|
42
|
+
error: (msg) => {
|
|
43
|
+
const formatted = formatMessage("ERROR", msg);
|
|
44
|
+
log_file.write(formatted);
|
|
45
|
+
log_stdout.write(COLORS.ERROR + formatted + COLORS.RESET);
|
|
46
|
+
},
|
|
47
|
+
fatal: (msg) => {
|
|
48
|
+
const formatted = formatMessage("FATAL", msg);
|
|
49
|
+
log_file.write(formatted);
|
|
50
|
+
log_stdout.write(COLORS.FATAL + formatted + COLORS.RESET);
|
|
51
|
+
},
|
|
52
|
+
log: (msg) => {
|
|
53
|
+
const formatted = formatMessage("LOG", msg);
|
|
54
|
+
log_file.write(formatted);
|
|
55
|
+
log_stdout.write(formatted);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
module.exports = create_logger;
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
const fs = require("fs");
|
|
2
2
|
const util = require("util");
|
|
3
3
|
|
|
4
|
-
const default_options = require(
|
|
5
|
-
const { dd_month_yyyy_day } = require(
|
|
4
|
+
const default_options = require("./log-options");
|
|
5
|
+
const { dd_month_yyyy_day } = require("./utils/date-formats");
|
|
6
6
|
|
|
7
7
|
const log_stdout = process.stdout;
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
const create_logger = (options = {}) => {
|
|
11
|
-
|
|
9
|
+
const simple_logger = (options = {}) => {
|
|
12
10
|
const final_options = {
|
|
13
11
|
...default_options,
|
|
14
12
|
...options,
|
|
15
|
-
}
|
|
13
|
+
};
|
|
16
14
|
|
|
17
15
|
const { logs_folder, mode } = final_options;
|
|
18
16
|
|
|
@@ -35,4 +33,4 @@ const create_logger = (options = {}) => {
|
|
|
35
33
|
};
|
|
36
34
|
};
|
|
37
35
|
|
|
38
|
-
module.exports =
|
|
36
|
+
module.exports = simple_logger;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
|
|
3
|
+
const { create_logger } = require('../index');
|
|
4
|
+
|
|
5
|
+
const logger = create_logger({
|
|
6
|
+
logs_folder: `${process.cwd()}/logger-logs`,
|
|
7
|
+
mode: "a" // append mode
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
console.log("=== Testing log levels ===");
|
|
11
|
+
|
|
12
|
+
logger.info("This is an info message.");
|
|
13
|
+
logger.warn("This is a warning.");
|
|
14
|
+
logger.error("This is an error.");
|
|
15
|
+
logger.fatal("This is a fatal error.");
|
|
16
|
+
logger.log("This is a generic log.");
|
package/test/options.spec.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const
|
|
1
|
+
const simple_logger = require("../index");
|
|
2
2
|
|
|
3
|
-
console.log =
|
|
4
|
-
logs_folder: `${process.cwd()}/
|
|
3
|
+
console.log = simple_logger({
|
|
4
|
+
logs_folder: `${process.cwd()}/simple-logs`,
|
|
5
5
|
mode: "a",
|
|
6
|
-
})
|
|
6
|
+
});
|
|
7
7
|
|
|
8
8
|
console.log(`testing log in new folder with append mode ${Date.now()}`);
|
|
9
9
|
console.log(`Process ID is : ${process.pid}`);
|