@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 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
- import logger from '@theshelf/logging';
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 debug information
74
- await logger.logDebug(message);
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.2.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
  }