jet-logger 1.3.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/README.md CHANGED
@@ -13,7 +13,7 @@ $ npm install --save jet-logger
13
13
  ```
14
14
 
15
15
  ### Guide
16
- The logger package's main export is the default `logger` object. This default export will use of course, all the default settings. If you wish to pass your own settings you can import the `jetLogger()` function and pass parameters to configure your own custom logging objects.
16
+ The logger package's default export is an instance of the `JetLogger` class. This default export uses all the default settings. If you wish to pass your own settings you can import the `JetLogger` class and pass parameters to the constructor to configure your own custom logger.
17
17
 
18
18
  - The five environment variables are:
19
19
  - `JET_LOGGER_MODE`: can be `'CONSOLE'`(default), `'FILE'`, `'CUSTOM'`, and `'OFF'`.
@@ -22,7 +22,7 @@ The logger package's main export is the default `logger` object. This default ex
22
22
  - `JET_LOGGER_TIMESTAMP`: adds a timestamp next to each log. Can be `'TRUE'` (default) or `'FALSE'`.
23
23
  - `JET_LOGGER_FORMAT`: formats log as a line or JSON object. Can be `'LINE'` (default) or `'JSON'`.
24
24
 
25
- _logger_ has an export `LoggerModes` which is an enum that provides all the modes if you want to use them in code. I would recommend using `Console` for local development, `File` for remote development, and `Custom` or `Off` for production. If you want to change the settings in code, you can do so via importing the `JetLogger` function and calling it with whatever options you want.
25
+ _logger_ has an export `LoggerModes` which is an enum that provides all the modes if you want to use them in code. I would recommend using `Console` for local development, `File` for remote development, and `Custom` or `Off` for production. If you want to change the settings in code, you can do so via importing the `JetLogger` class and calling it with whatever options you want.
26
26
  <br>
27
27
 
28
28
  - There are 4 functions on Logger to print logs.
@@ -97,18 +97,17 @@ For production you'll probably have some third party logging tool like ElasticSe
97
97
  // In the route file
98
98
  import { OK } from 'http-status-codes';
99
99
  import { Router, Request, Response } from 'express';
100
- import { jetLogger, TCustomLogFn, ILogger } from 'jet-logger';
100
+ import { JetLogger, TCustomLogFn } from 'jet-logger';
101
101
  import { thirdPartyLoggingApp } from 'thirdPartyLoggingApplicationLib';
102
102
 
103
103
 
104
104
  // Needs to be implemented
105
- const customSend: TCustomLogFn = (timestamp: Date, level: string, content: any) => {
105
+ const customSend: TCustomLogFn = (timestamp: Date, level: string, content: unknown) => {
106
106
  thirdPartyLoggingApp.doStuff(...);
107
107
  }
108
108
 
109
109
  router.get('api/users', async (req: Request, res: Reponse) => {
110
- const logger: ILogger = jetLogger(LoggerModes.CUSTOM, '', true, true, undefined, customSend);
111
- logger.settings.rmTimestamp = true;
110
+ const logger = new JetLogger(LoggerModes.CUSTOM, '', true, true, undefined, customSend);
112
111
  logger.info(req.params.msg);
113
112
  return res.status(OK).json({
114
113
  message: 'console_mode',
@@ -0,0 +1,30 @@
1
+ export declare enum LoggerModes {
2
+ Console = "CONSOLE",
3
+ File = "FILE",
4
+ Custom = "CUSTOM",
5
+ Off = "OFF"
6
+ }
7
+ export declare enum Formats {
8
+ Line = "LINE",
9
+ Json = "JSON"
10
+ }
11
+ export declare type TCustomLogFn = (timestamp: Date, prefix: string, content: unknown) => void;
12
+ export declare class JetLogger {
13
+ private mode;
14
+ private filePath;
15
+ private timestamp;
16
+ private format;
17
+ private customLogFn;
18
+ constructor(mode?: LoggerModes, filepath?: string, filepathDatetimeParam?: boolean, timestamp?: boolean, format?: Formats, customLogFn?: TCustomLogFn);
19
+ private addDatetimeToFileName;
20
+ info(content: unknown, printFull?: boolean): void;
21
+ imp(content: unknown, printFull?: boolean): void;
22
+ warn(content: unknown, printFull?: boolean): void;
23
+ err(content: unknown, printFull?: boolean): void;
24
+ private printLog;
25
+ private setupLineFormat;
26
+ private setupJsonFormat;
27
+ private writeToFile;
28
+ }
29
+ declare const _default: JetLogger;
30
+ export default _default;
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.JetLogger = exports.Formats = exports.LoggerModes = void 0;
7
+ var util_1 = __importDefault(require("util"));
8
+ var colors_1 = __importDefault(require("colors"));
9
+ var fs_1 = __importDefault(require("fs"));
10
+ var LoggerModes;
11
+ (function (LoggerModes) {
12
+ LoggerModes["Console"] = "CONSOLE";
13
+ LoggerModes["File"] = "FILE";
14
+ LoggerModes["Custom"] = "CUSTOM";
15
+ LoggerModes["Off"] = "OFF";
16
+ })(LoggerModes = exports.LoggerModes || (exports.LoggerModes = {}));
17
+ var Formats;
18
+ (function (Formats) {
19
+ Formats["Line"] = "LINE";
20
+ Formats["Json"] = "JSON";
21
+ })(Formats = exports.Formats || (exports.Formats = {}));
22
+ var Levels = {
23
+ Info: {
24
+ Color: 'green',
25
+ Prefix: 'INFO',
26
+ },
27
+ Important: {
28
+ Color: 'magenta',
29
+ Prefix: 'IMPORTANT',
30
+ },
31
+ Warning: {
32
+ Color: 'yellow',
33
+ Prefix: 'WARNING',
34
+ },
35
+ Error: {
36
+ Color: 'red',
37
+ Prefix: 'ERROR',
38
+ }
39
+ };
40
+ var Errors = {
41
+ CustomLogFn: 'Custom logger mode set to true, but no custom logger was ' +
42
+ 'provided.',
43
+ Mode: 'The correct logger mode was not specified: Must be "CUSTOM", ' +
44
+ '"FILE", "OFF", or "CONSOLE".'
45
+ };
46
+ var JetLogger = (function () {
47
+ function JetLogger(mode, filepath, filepathDatetimeParam, timestamp, format, customLogFn) {
48
+ this.mode = LoggerModes.Console;
49
+ this.filePath = 'jet-logger.log';
50
+ this.timestamp = true;
51
+ this.format = Formats.Line;
52
+ this.customLogFn = function () { return ({}); };
53
+ if (mode !== undefined) {
54
+ this.mode = mode;
55
+ }
56
+ else if (!!process.env.JET_LOGGER_MODE) {
57
+ this.mode = process.env.JET_LOGGER_MODE.toUpperCase();
58
+ }
59
+ if (filepath !== undefined) {
60
+ this.filePath = filepath;
61
+ }
62
+ else if (!!process.env.JET_LOGGER_FILEPATH) {
63
+ this.filePath = process.env.JET_LOGGER_FILEPATH;
64
+ }
65
+ var filePathDatetime = true;
66
+ if (filepathDatetimeParam !== undefined) {
67
+ filePathDatetime = filepathDatetimeParam;
68
+ }
69
+ else if (!!process.env.JET_LOGGER_FILEPATH_DATETIME) {
70
+ var envVar = process.env.JET_LOGGER_FILEPATH_DATETIME;
71
+ filePathDatetime = envVar.toUpperCase() === 'TRUE';
72
+ }
73
+ if (timestamp !== undefined) {
74
+ this.timestamp = timestamp;
75
+ }
76
+ else if (!!process.env.JET_LOGGER_TIMESTAMP) {
77
+ var envVar = process.env.JET_LOGGER_TIMESTAMP;
78
+ this.timestamp = (envVar.toUpperCase() === 'TRUE');
79
+ }
80
+ if (format !== undefined) {
81
+ this.format = format;
82
+ }
83
+ else if (!!process.env.JET_LOGGER_FORMAT) {
84
+ this.format = process.env.JET_LOGGER_FORMAT.toUpperCase();
85
+ }
86
+ if (filePathDatetime) {
87
+ this.filePath = this.addDatetimeToFileName(this.filePath);
88
+ }
89
+ if (customLogFn !== undefined) {
90
+ this.customLogFn = customLogFn;
91
+ }
92
+ }
93
+ JetLogger.prototype.addDatetimeToFileName = function (filePath) {
94
+ var dateStr = new Date().toISOString()
95
+ .split('-').join('')
96
+ .split(':').join('')
97
+ .slice(0, 15);
98
+ var filePathArr = filePath.split('/'), lastIdx = filePathArr.length - 1, fileName = filePathArr[lastIdx], fileNameNew = (dateStr + '_' + fileName);
99
+ filePathArr[lastIdx] = fileNameNew;
100
+ return filePathArr.join('/');
101
+ };
102
+ JetLogger.prototype.info = function (content, printFull) {
103
+ this.printLog(content, !!printFull, Levels.Info);
104
+ };
105
+ JetLogger.prototype.imp = function (content, printFull) {
106
+ this.printLog(content, !!printFull, Levels.Important);
107
+ };
108
+ JetLogger.prototype.warn = function (content, printFull) {
109
+ this.printLog(content, !!printFull, Levels.Warning);
110
+ };
111
+ JetLogger.prototype.err = function (content, printFull) {
112
+ this.printLog(content, !!printFull, Levels.Error);
113
+ };
114
+ JetLogger.prototype.printLog = function (contentParam, printFull, level) {
115
+ if (this.mode === LoggerModes.Off) {
116
+ return;
117
+ }
118
+ var content;
119
+ if (printFull) {
120
+ content = util_1.default.inspect(contentParam);
121
+ }
122
+ else {
123
+ content = String(contentParam);
124
+ }
125
+ if (this.mode === LoggerModes.Custom) {
126
+ if (!!this.customLogFn) {
127
+ return this.customLogFn(new Date(), level.Prefix, content);
128
+ }
129
+ else {
130
+ throw Error(Errors.CustomLogFn);
131
+ }
132
+ }
133
+ if (this.format === Formats.Line) {
134
+ content = this.setupLineFormat(content, level);
135
+ }
136
+ else if (this.format === Formats.Json) {
137
+ content = this.setupJsonFormat(content, level);
138
+ }
139
+ if (this.mode === LoggerModes.Console) {
140
+ var colorFn = colors_1.default[level.Color];
141
+ console.log(colorFn(content));
142
+ }
143
+ else if (this.mode === LoggerModes.File) {
144
+ this.writeToFile(content + '\n');
145
+ }
146
+ else {
147
+ throw Error(Errors.Mode);
148
+ }
149
+ };
150
+ JetLogger.prototype.setupLineFormat = function (content, level) {
151
+ content = (level.Prefix + ': ' + content);
152
+ if (this.timestamp) {
153
+ var time = '[' + new Date().toISOString() + '] ';
154
+ return (time + content);
155
+ }
156
+ return content;
157
+ };
158
+ JetLogger.prototype.setupJsonFormat = function (content, level) {
159
+ var json = {
160
+ level: level.Prefix,
161
+ message: content,
162
+ };
163
+ if (this.timestamp) {
164
+ json.timestamp = new Date().toISOString();
165
+ }
166
+ return JSON.stringify(json);
167
+ };
168
+ JetLogger.prototype.writeToFile = function (content) {
169
+ fs_1.default.appendFile(this.filePath, content, function (err) {
170
+ if (!!err) {
171
+ console.error(err);
172
+ }
173
+ });
174
+ };
175
+ return JetLogger;
176
+ }());
177
+ exports.JetLogger = JetLogger;
178
+ exports.default = new JetLogger();
package/lib/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { LoggerModes, Formats, TCustomLogFn, ILogger, jetLogger, default as default, } from './jetLogger';
1
+ export { LoggerModes, Formats, TCustomLogFn, JetLogger, default as default, } from './JetLogger';
package/lib/index.js CHANGED
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = exports.jetLogger = exports.Formats = exports.LoggerModes = void 0;
7
- var jetLogger_1 = require("./jetLogger");
8
- Object.defineProperty(exports, "LoggerModes", { enumerable: true, get: function () { return jetLogger_1.LoggerModes; } });
9
- Object.defineProperty(exports, "Formats", { enumerable: true, get: function () { return jetLogger_1.Formats; } });
10
- Object.defineProperty(exports, "jetLogger", { enumerable: true, get: function () { return jetLogger_1.jetLogger; } });
11
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(jetLogger_1).default; } });
6
+ exports.default = exports.JetLogger = exports.Formats = exports.LoggerModes = void 0;
7
+ var JetLogger_1 = require("./JetLogger");
8
+ Object.defineProperty(exports, "LoggerModes", { enumerable: true, get: function () { return JetLogger_1.LoggerModes; } });
9
+ Object.defineProperty(exports, "Formats", { enumerable: true, get: function () { return JetLogger_1.Formats; } });
10
+ Object.defineProperty(exports, "JetLogger", { enumerable: true, get: function () { return JetLogger_1.JetLogger; } });
11
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(JetLogger_1).default; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jet-logger",
3
- "version": "1.3.1",
3
+ "version": "2.0.1",
4
4
  "description": "A super quick, easy to setup logging tool for NodeJS/TypeScript.",
5
5
  "main": "./lib/index.js",
6
6
  "typings": "./lib/index.d.ts",
@@ -1,30 +0,0 @@
1
- export declare enum LoggerModes {
2
- Console = "CONSOLE",
3
- File = "FILE",
4
- Custom = "CUSTOM",
5
- Off = "OFF"
6
- }
7
- export declare enum Formats {
8
- Line = "LINE",
9
- Json = "JSON"
10
- }
11
- declare type TLogFn = (content: any, printFull?: boolean) => void;
12
- export declare type TCustomLogFn = (timestamp: Date, prefix: string, content: unknown) => void;
13
- export interface ILogger {
14
- settings: ISettings;
15
- info: TLogFn;
16
- imp: TLogFn;
17
- warn: TLogFn;
18
- err: TLogFn;
19
- }
20
- interface ISettings {
21
- mode: LoggerModes;
22
- filepath: string;
23
- filepathDatetime: boolean;
24
- timestamp: boolean;
25
- format: Formats;
26
- customLogFn?: TCustomLogFn;
27
- }
28
- export declare function jetLogger(mode?: LoggerModes, filepath?: string, filepathDatetime?: boolean, timestamp?: boolean, format?: Formats, customLogFn?: TCustomLogFn): ILogger;
29
- declare const _default: ILogger;
30
- export default _default;
package/lib/jetLogger.js DELETED
@@ -1,190 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.jetLogger = exports.Formats = exports.LoggerModes = void 0;
7
- var util_1 = __importDefault(require("util"));
8
- var colors_1 = __importDefault(require("colors"));
9
- var fs_1 = __importDefault(require("fs"));
10
- var LoggerModes;
11
- (function (LoggerModes) {
12
- LoggerModes["Console"] = "CONSOLE";
13
- LoggerModes["File"] = "FILE";
14
- LoggerModes["Custom"] = "CUSTOM";
15
- LoggerModes["Off"] = "OFF";
16
- })(LoggerModes = exports.LoggerModes || (exports.LoggerModes = {}));
17
- var Formats;
18
- (function (Formats) {
19
- Formats["Line"] = "LINE";
20
- Formats["Json"] = "JSON";
21
- })(Formats = exports.Formats || (exports.Formats = {}));
22
- var Levels = {
23
- Info: {
24
- Color: 'green',
25
- Prefix: 'INFO',
26
- },
27
- Imp: {
28
- Color: 'magenta',
29
- Prefix: 'IMPORTANT',
30
- },
31
- Warn: {
32
- Color: 'yellow',
33
- Prefix: 'WARNING',
34
- },
35
- Err: {
36
- Color: 'red',
37
- Prefix: 'ERROR',
38
- }
39
- };
40
- var Errors = {
41
- customLogFn: 'Custom logger mode set to true, but no custom logger was ' +
42
- 'provided.',
43
- Mode: 'The correct logger mode was not specified: Must be "CUSTOM", ' +
44
- '"FILE", "OFF", or "CONSOLE".'
45
- };
46
- var Defaults = {
47
- Filepath: 'jet-logger.log',
48
- Mode: LoggerModes.Console,
49
- Timestamp: true,
50
- FilepathDatetime: true,
51
- Format: Formats.Line,
52
- };
53
- function jetLogger(mode, filepath, filepathDatetime, timestamp, format, customLogFn) {
54
- var settings = _getSettings(mode, filepath, timestamp, filepathDatetime, format, customLogFn);
55
- return { settings: settings, info: info, imp: imp, warn: warn, err: err };
56
- }
57
- exports.jetLogger = jetLogger;
58
- function _getSettings(mode, filepath, filepathDatetime, timestamp, format, customLogFn) {
59
- if (!mode) {
60
- if (!!process.env.JET_LOGGER_MODE) {
61
- mode = process.env.JET_LOGGER_MODE.toUpperCase();
62
- }
63
- else {
64
- mode = Defaults.Mode;
65
- }
66
- }
67
- if (!filepath) {
68
- if (!!process.env.JET_LOGGER_FILEPATH) {
69
- filepath = process.env.JET_LOGGER_FILEPATH;
70
- }
71
- else {
72
- filepath = Defaults.Filepath;
73
- }
74
- }
75
- if (filepathDatetime === undefined || filepathDatetime === null) {
76
- var envVar = process.env.JET_LOGGER_FILEPATH_DATETIME;
77
- if (!!envVar) {
78
- filepathDatetime = (envVar.toUpperCase() === 'TRUE');
79
- }
80
- else {
81
- filepathDatetime = Defaults.FilepathDatetime;
82
- }
83
- }
84
- if (timestamp === undefined || timestamp === null) {
85
- if (!!process.env.JET_LOGGER_TIMESTAMP) {
86
- timestamp = (process.env.JET_LOGGER_TIMESTAMP.toUpperCase() === 'TRUE');
87
- }
88
- else {
89
- timestamp = Defaults.Timestamp;
90
- }
91
- }
92
- if (!format) {
93
- if (!!process.env.JET_LOGGER_FORMAT) {
94
- format = process.env.JET_LOGGER_FORMAT.toUpperCase();
95
- }
96
- else {
97
- format = Defaults.Format;
98
- }
99
- }
100
- if (filepathDatetime) {
101
- filepath = _addDatetimeToFileName(filepath);
102
- }
103
- return {
104
- mode: mode,
105
- filepath: filepath,
106
- filepathDatetime: filepathDatetime,
107
- timestamp: timestamp,
108
- format: format,
109
- customLogFn: customLogFn,
110
- };
111
- }
112
- function _addDatetimeToFileName(filePath) {
113
- var dateStr = new Date().toISOString()
114
- .split('-').join('')
115
- .split(':').join('')
116
- .slice(0, 15);
117
- var filePathArr = filePath.split('/'), lastIdx = filePathArr.length - 1, fileName = filePathArr[lastIdx], fileNameNew = (dateStr + '_' + fileName);
118
- filePathArr[lastIdx] = fileNameNew;
119
- return filePathArr.join('/');
120
- }
121
- function info(content, printFull) {
122
- return _printLog(content, printFull !== null && printFull !== void 0 ? printFull : false, Levels.Info, this.settings);
123
- }
124
- function imp(content, printFull) {
125
- return _printLog(content, printFull !== null && printFull !== void 0 ? printFull : false, Levels.Imp, this.settings);
126
- }
127
- function warn(content, printFull) {
128
- return _printLog(content, printFull !== null && printFull !== void 0 ? printFull : false, Levels.Warn, this.settings);
129
- }
130
- function err(content, printFull) {
131
- return _printLog(content, printFull !== null && printFull !== void 0 ? printFull : false, Levels.Err, this.settings);
132
- }
133
- function _printLog(content, printFull, level, settings) {
134
- var mode = settings.mode, format = settings.format, timestamp = settings.timestamp, filepath = settings.filepath, customLogFn = settings.customLogFn;
135
- if (mode === LoggerModes.Off) {
136
- return;
137
- }
138
- if (printFull) {
139
- content = util_1.default.inspect(content);
140
- }
141
- if (mode === LoggerModes.Custom) {
142
- if (!!customLogFn) {
143
- return customLogFn(new Date(), level.Prefix, content);
144
- }
145
- else {
146
- throw Error(Errors.customLogFn);
147
- }
148
- }
149
- if (format === Formats.Line) {
150
- content = _setupLineFormat(content, timestamp, level);
151
- }
152
- else if (format === Formats.Json) {
153
- content = _setupJsonFormat(content, timestamp, level);
154
- }
155
- if (mode === LoggerModes.Console) {
156
- var colorFn = colors_1.default[level.Color];
157
- console.log(colorFn(content));
158
- }
159
- else if (mode === LoggerModes.File) {
160
- _writeToFile(content + '\n', filepath)
161
- .catch(function (err) { return console.log(err); });
162
- }
163
- else {
164
- throw Error(Errors.Mode);
165
- }
166
- }
167
- function _setupLineFormat(content, timestamp, level) {
168
- content = (level.Prefix + ': ' + content);
169
- if (timestamp) {
170
- var time = '[' + new Date().toISOString() + '] ';
171
- return (time + content);
172
- }
173
- return content;
174
- }
175
- function _setupJsonFormat(content, timestamp, level) {
176
- var json = {
177
- level: level.Prefix,
178
- message: content,
179
- };
180
- if (timestamp) {
181
- json.timestamp = new Date().toISOString();
182
- }
183
- return JSON.stringify(json);
184
- }
185
- function _writeToFile(content, filePath) {
186
- return new Promise(function (res, rej) {
187
- return fs_1.default.appendFile(filePath, content, (function (err) { return !!err ? rej(err) : res(); }));
188
- });
189
- }
190
- exports.default = jetLogger();
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "exclude": [
4
- "./node_modules",
5
- "test"
6
- ]
7
- }