@quatrain/log 1.0.1 → 1.0.3
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 +26 -0
- package/lib/AbstractLoggerAdapter.js +3 -0
- package/lib/DefaultLoggerAdapter.js +6 -5
- package/package.json +3 -2
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# @quatrain/log
|
|
2
|
+
|
|
3
|
+
A structured logging package for Quatrain applications. It uses an adapter pattern to allow for different logging backends, such as the console, file, or a cloud logging service.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Multiple Log Levels**: Supports `DEBUG`, `INFO`, `WARN`, `ERROR`, and `CRITICAL`.
|
|
8
|
+
- **Adapter Pattern**: Pluggable adapters for various logging outputs.
|
|
9
|
+
- **Domain-specific Loggers**: Create separate logger instances for different parts of your application.
|
|
10
|
+
- **Structured JSON Output**: Logs can be formatted as JSON for easy parsing by log management systems.
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @quatrain/log
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { Log, LogLevel } from '@quatrain/log'
|
|
22
|
+
import { ConsoleLoggerAdapter } from '@quatrain/log' // Example adapter
|
|
23
|
+
|
|
24
|
+
const logger = Log.addLogger('api', new ConsoleLoggerAdapter(), true)
|
|
25
|
+
logger.info('Server has started.', { port: 3000 })
|
|
26
|
+
```
|
|
@@ -16,6 +16,9 @@ class AbstractLoggerAdapter {
|
|
|
16
16
|
this._logLevel = Log_1.LogLevel.WARN;
|
|
17
17
|
this._logger = undefined;
|
|
18
18
|
this.formatLogMessage = (messages, loglevel = 3) => {
|
|
19
|
+
if (!Array.isArray(messages)) {
|
|
20
|
+
messages = [messages];
|
|
21
|
+
}
|
|
19
22
|
messages.unshift(`${Log_1.Log.timestamp()} - [${this._me}]`);
|
|
20
23
|
const strs = messages.map((message) => {
|
|
21
24
|
return typeof message !== 'object' ? message : JSON.stringify(message);
|
|
@@ -7,6 +7,7 @@ exports.DefaultLoggerAdapter = void 0;
|
|
|
7
7
|
const AbstractLoggerAdapter_1 = require("./AbstractLoggerAdapter");
|
|
8
8
|
const loglevel_1 = __importDefault(require("loglevel"));
|
|
9
9
|
const Log_1 = require("./Log");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
11
|
class DefaultLoggerAdapter extends AbstractLoggerAdapter_1.AbstractLoggerAdapter {
|
|
11
12
|
constructor(prefix = '', level = Log_1.LogLevel.DEBUG) {
|
|
12
13
|
super(prefix, level);
|
|
@@ -22,19 +23,19 @@ class DefaultLoggerAdapter extends AbstractLoggerAdapter_1.AbstractLoggerAdapter
|
|
|
22
23
|
const message = this.formatLogMessage(messages);
|
|
23
24
|
switch (level) {
|
|
24
25
|
case Log_1.LogLevel.TRACE:
|
|
25
|
-
this._logger.trace(message);
|
|
26
|
+
this._logger.trace(chalk_1.default.grey(message));
|
|
26
27
|
break;
|
|
27
28
|
case Log_1.LogLevel.DEBUG:
|
|
28
|
-
this._logger.debug(message);
|
|
29
|
+
this._logger.debug(chalk_1.default.yellow(message));
|
|
29
30
|
break;
|
|
30
31
|
case Log_1.LogLevel.INFO:
|
|
31
|
-
this._logger.info(message);
|
|
32
|
+
this._logger.info(chalk_1.default.green(message));
|
|
32
33
|
break;
|
|
33
34
|
case Log_1.LogLevel.WARN:
|
|
34
|
-
this._logger.warn(message);
|
|
35
|
+
this._logger.warn(chalk_1.default.red(message));
|
|
35
36
|
break;
|
|
36
37
|
case Log_1.LogLevel.ERROR:
|
|
37
|
-
this._logger.error(message);
|
|
38
|
+
this._logger.error(chalk_1.default.bgRedBright(message));
|
|
38
39
|
break;
|
|
39
40
|
default:
|
|
40
41
|
this._logger.log(message);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quatrain/log",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Logger for business apps",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@tsconfig/recommended": "^1.0.1",
|
|
15
15
|
"@types/jest": "^27.0.3",
|
|
16
16
|
"@types/node": "^22.10.1",
|
|
17
|
-
"jest": "^
|
|
17
|
+
"jest": "^30.2.0",
|
|
18
18
|
"jest-node-exports-resolver": "^1.1.6",
|
|
19
19
|
"trace-unhandled": "^2.0.1",
|
|
20
20
|
"ts-jest": "^27.1.2",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"typescript": "^5.1.5"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"chalk": "^5.6.2",
|
|
25
26
|
"loglevel": "^1.9.2"
|
|
26
27
|
},
|
|
27
28
|
"scripts": {
|