@theshelf/logging 0.2.0 → 0.3.0
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 +18 -3
- package/dist/drivers/Database.d.ts +12 -0
- package/dist/drivers/Database.js +31 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ Currently, there are three drivers available:
|
|
|
16
16
|
* **Void** - dummy driver that doesn't log anything (suited for testing).
|
|
17
17
|
* **Memory** - in memory logging (suited for testing).
|
|
18
18
|
* **Console** - driver based on the Node.js console.
|
|
19
|
+
* **Database** - driver that logs messages into a database.
|
|
19
20
|
|
|
20
21
|
## How to use
|
|
21
22
|
|
|
@@ -56,10 +57,24 @@ No configuration options.
|
|
|
56
57
|
|
|
57
58
|
No configuration options.
|
|
58
59
|
|
|
60
|
+
#### Database driver
|
|
61
|
+
|
|
62
|
+
The database driver requires a [database](https://github.com/MaskingTechnology/theshelf/tree/main/packages/database) from @theshelf and a table name (record type) to log messages into.
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import { database } from './your-database-instance';
|
|
66
|
+
|
|
67
|
+
const recordType = 'logs';
|
|
68
|
+
const driver = new DatabaseDriver(database, recordType);
|
|
69
|
+
|
|
70
|
+
const logger = new Logger(driver);
|
|
71
|
+
```
|
|
72
|
+
|
|
59
73
|
### Operations
|
|
60
74
|
|
|
61
75
|
```ts
|
|
62
|
-
|
|
76
|
+
// Log debug
|
|
77
|
+
await logger.logDebug(message);
|
|
63
78
|
|
|
64
79
|
// Log info
|
|
65
80
|
await logger.logInfo(message);
|
|
@@ -70,8 +85,8 @@ await logger.logWarn(message);
|
|
|
70
85
|
// Log error
|
|
71
86
|
await logger.logError(message);
|
|
72
87
|
|
|
73
|
-
// Log
|
|
74
|
-
await logger.
|
|
88
|
+
// Log fatal
|
|
89
|
+
await logger.logFatal(message);
|
|
75
90
|
|
|
76
91
|
// Log multiple messages (works for all levels)
|
|
77
92
|
await logger.logInfo(message1, message2, ...);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Database from '@theshelf/database';
|
|
2
|
+
import type { RecordType } from '@theshelf/database';
|
|
3
|
+
import type { Driver } from '../definitions/interfaces.js';
|
|
4
|
+
export default class DatabaseDriver implements Driver {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(database: Database, recordType: RecordType);
|
|
7
|
+
logDebug(message: string): Promise<void>;
|
|
8
|
+
logInfo(message: string): Promise<void>;
|
|
9
|
+
logWarn(message: string): Promise<void>;
|
|
10
|
+
logError(message: string): Promise<void>;
|
|
11
|
+
logFatal(message: string): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export default class DatabaseDriver {
|
|
2
|
+
#database;
|
|
3
|
+
#recordType;
|
|
4
|
+
constructor(database, recordType) {
|
|
5
|
+
this.#recordType = recordType;
|
|
6
|
+
this.#database = database;
|
|
7
|
+
}
|
|
8
|
+
logDebug(message) {
|
|
9
|
+
return this.#logRecord('DEBUG', message);
|
|
10
|
+
}
|
|
11
|
+
logInfo(message) {
|
|
12
|
+
return this.#logRecord('INFO', message);
|
|
13
|
+
}
|
|
14
|
+
logWarn(message) {
|
|
15
|
+
return this.#logRecord('WARN', message);
|
|
16
|
+
}
|
|
17
|
+
logError(message) {
|
|
18
|
+
return this.#logRecord('ERROR', message);
|
|
19
|
+
}
|
|
20
|
+
logFatal(message) {
|
|
21
|
+
return this.#logRecord('FATAL', message);
|
|
22
|
+
}
|
|
23
|
+
async #logRecord(level, message) {
|
|
24
|
+
const data = {
|
|
25
|
+
timestamp: new Date().toISOString(),
|
|
26
|
+
level,
|
|
27
|
+
message
|
|
28
|
+
};
|
|
29
|
+
await this.#database.createRecord(this.#recordType, data);
|
|
30
|
+
}
|
|
31
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type * from './definitions/constants.js';
|
|
|
3
3
|
export type * from './definitions/interfaces.js';
|
|
4
4
|
export { default as LogError } from './errors/LogError.js';
|
|
5
5
|
export { default as ConsoleDriver } from './drivers/Console.js';
|
|
6
|
+
export { default as DatabaseDriver } from './drivers/Database.js';
|
|
6
7
|
export { default as MemoryDriver } from './drivers/Memory.js';
|
|
7
8
|
export { default as VoidDriver } from './drivers/Void.js';
|
|
8
9
|
export { default } from './Logger.js';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './definitions/constants.js';
|
|
2
2
|
export { default as LogError } from './errors/LogError.js';
|
|
3
3
|
export { default as ConsoleDriver } from './drivers/Console.js';
|
|
4
|
+
export { default as DatabaseDriver } from './drivers/Database.js';
|
|
4
5
|
export { default as MemoryDriver } from './drivers/Memory.js';
|
|
5
6
|
export { default as VoidDriver } from './drivers/Void.js';
|
|
6
7
|
export { default } from './Logger.js';
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theshelf/logging",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
|
-
"url": "https://github.com/MaskingTechnology/theshelf"
|
|
7
|
+
"url": "git+https://github.com/MaskingTechnology/theshelf.git"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "tsc",
|
|
@@ -20,5 +20,13 @@
|
|
|
20
20
|
"dist"
|
|
21
21
|
],
|
|
22
22
|
"types": "dist/index.d.ts",
|
|
23
|
-
"exports": "./dist/index.js"
|
|
23
|
+
"exports": "./dist/index.js",
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"@theshelf/database": "^0.3.0"
|
|
26
|
+
},
|
|
27
|
+
"peerDependenciesMeta": {
|
|
28
|
+
"@theshelf/database": {
|
|
29
|
+
"optional": true
|
|
30
|
+
}
|
|
31
|
+
}
|
|
24
32
|
}
|