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 CHANGED
@@ -11,6 +11,6 @@ Before creating any Pull requests please follow the guidelines.
11
11
  3. Script to archive the logs.
12
12
 
13
13
  ## Steps to publish (For repo admins)
14
- ```
15
- npm publish
16
- ```
14
+
15
+ 1. Update sem-ver in `package.json`
16
+ 2. `npm publish` (2FA needed)
package/README.md CHANGED
@@ -1,13 +1,14 @@
1
1
  # log-likho
2
- Our favourite console.log, but on steroids.
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
- ### Usage
6
- ```
7
+ ```sh
7
8
  npm install log-likho
8
9
  ```
9
10
 
10
- Now at the start of the code let's modify console.log with this steroid version.
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
- ### Log in append mode
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
- ### With all the options
30
+ ##### With all the options
30
31
 
31
32
  ```js
32
- const create_logger = require('log-likho');
33
+ const simple_logger = require('log-likho');
33
34
 
34
- console.log = create_logger({
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 delete old log for that day but instead append it with new logs.
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
+ ![LoggerImage](./assets/image.png)
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
- Options | Default Value | Possible values | Purpose
48
- --- | --- | --- | ---
49
- `logs_folder` | './logs' | any accessible folder | Sets the folder path where the logs will be stored
50
- `mode` | 'w' | 'a' or 'w' | configures how daily logs are written i.e overwriting mode with 'w' or append mode with 'a'
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 |
Binary file
package/index.js CHANGED
@@ -1,3 +1,5 @@
1
- const create_logger = require('./src/create-logger');
1
+ const simple_logger = require("./src/simple-logger");
2
+ const create_logger = require("./src/logger");
2
3
 
3
- module.exports = create_logger;
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": "1.2.1",
4
- "description": "console.log on steroids",
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('./log-options');
5
- const { dd_month_yyyy_day } = require('./utils/date-formats');
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 = create_logger;
36
+ module.exports = simple_logger;
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ RESET: "\x1b[0m",
3
+ INFO: "\x1b[36m", // Cyan
4
+ WARN: "\x1b[33m", // Yellow
5
+ ERROR: "\x1b[31m", // Red
6
+ FATAL: "\x1b[35m" // Magenta
7
+ };
@@ -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.");
@@ -1,9 +1,9 @@
1
- const create_logger = require('../index');
1
+ const simple_logger = require("../index");
2
2
 
3
- console.log = create_logger({
4
- logs_folder: `${process.cwd()}/logger`,
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}`);