Skip to content
This repository was archived by the owner on May 22, 2024. It is now read-only.

Commit a64930d

Browse files
authored
Merge pull request #3 from egomobile/improvings
useMongoLogger() works similar to api-log now
2 parents c0fef16 + 68f4f20 commit a64930d

File tree

5 files changed

+62
-45
lines changed

5 files changed

+62
-45
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Change Log (@egomobile/mongo-log)
22

3+
## 0.3.0
4+
5+
- BREAKING CHANGE: [useMongoLogger](https://egomobile.github.io/mongo-log/modules.html#useMongoLogger) returns an [AsyncLoggerMiddleware](https://egomobile.github.io/js-log/modules.html#AsyncLoggerMiddleware) now, similar to [api-log](https://github.com/egomobile/api-log)
6+
- pinned all non-e.GO packages in [package.json](https://github.com/egomobile/mongo-log/blob/master/package.json) file
7+
38
## 0.2.0
49

510
- move [@egomobile/mongo](https://github.com/egomobile/node-mongo) and [@egomobile/log](https://github.com/egomobile/js-log) to [peerDependencies](https://nodejs.org/uk/blog/npm/peer-dependencies/) in `package.json`

README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@ The following modules are defined in [peerDependencies](https://nodejs.org/uk/bl
2222
## Usage
2323

2424
```typescript
25-
import log, { useMongoLogger } from "@egomobile/mongo-log";
25+
import log, {
26+
consoleLogger as useConsoleLogger,
27+
useFallback,
28+
useMongoLogger,
29+
} from "@egomobile/mongo-log";
2630

27-
// run this, if you do not want to use console.log
28-
// log.reset();
31+
// reset the logger to configure it from scratch
32+
log.reset();
2933

30-
// add middleware
31-
log.use(useMongoLogger());
34+
// use mongo logger as first middleware and console logger as a fallback
35+
log.use(useFallback(useMongoLogger(), useConsoleLogger()));
3236

3337
log("foo"); // default: debug
3438
log.debug("foo"); // debug

package-lock.json

Lines changed: 4 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@egomobile/mongo-log",
3-
"version": "0.2.0",
3+
"version": "0.3.0",
44
"description": "Extension for js-log, that writes to Mongo databases.",
55
"main": "lib/index.js",
66
"engines": {
@@ -48,20 +48,20 @@
4848
"@types/node": "12.20.27"
4949
},
5050
"devDependencies": {
51-
"@egomobile/log": "0.2.1",
52-
"@egomobile/mongo": "1.0.0",
53-
"@egomobile/tsconfig": "5.0.0",
51+
"@egomobile/log": "^0.3.0",
52+
"@egomobile/mongo": "^1.0.0",
53+
"@egomobile/tsconfig": "^5.0.0",
5454
"del-cli": "4.0.1",
5555
"eslint": "7.32.0",
56-
"eslint-config-ego": "0.15.0",
56+
"eslint-config-ego": "^0.15.0",
5757
"nodemon": "2.0.13",
5858
"ts-node": "10.2.1",
5959
"tslint": "6.1.3",
6060
"typedoc": "0.22.5",
6161
"typescript": "4.4.3"
6262
},
6363
"peerDependencies": {
64-
"@egomobile/log": "0.2.1",
65-
"@egomobile/mongo": "1.0.0"
64+
"@egomobile/log": "^0.3.0",
65+
"@egomobile/mongo": "^1.0.0"
6666
}
6767
}

src/index.ts

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// You should have received a copy of the GNU Lesser General Public License
1414
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1515

16-
import log, { LoggerMiddleware } from '@egomobile/log';
16+
import log, { AsyncLoggerMiddleware, LoggerMiddleware, LogType, NextFunction } from '@egomobile/log';
1717
import { MongoDatabase } from '@egomobile/mongo';
1818
import type { IMongoLogContext, IUseMongoLoggerOptions, MongoLogCollectionProvider, MongoLogDatabaseProvider, MongoLogDocumentFactory } from './types';
1919

@@ -27,24 +27,32 @@ export const defaultMongoCollection = 'logs';
2727
*
2828
* @example
2929
* ```
30-
* import log, { useMongoLogger } from "@egomobile/mongo-log"
30+
* import log, { consoleLogger as useConsoleLogger, useFallback, useMongoLogger } from "@egomobile/mongo-log"
3131
*
32-
* // add as additional middleware
33-
* log.use(useMongoLogger())
32+
* // reset the logger to configure it from scratch
33+
* log.reset()
3434
*
35-
* log("foo") // default: debug
36-
* log.debug("foo") // debug
37-
* log.error("foo") // error
38-
* log.warn("foo") // warning
39-
* log.info("foo") // information
40-
* log.trace("foo") // trace
35+
* // use mongo logger as first middleware and console logger as a fallback
36+
* log.use(
37+
* useFallback(
38+
* useMongoLogger(),
39+
* useConsoleLogger()
40+
* )
41+
* )
42+
*
43+
* log("foo") // default: debug
44+
* log.debug("foo") // debug
45+
* log.error("foo") // error
46+
* log.warn("foo") // warning
47+
* log.info("foo") // information
48+
* log.trace("foo") // trace
4149
* ```
4250
*
4351
* @param {IUseMongoLoggerOptions|MongoLogDatabaseProvider|null|undefined} [optionsOrDatabase] The custom options or the database to use.
4452
*
45-
* @returns {LoggerMiddleware} The new middleware.
53+
* @returns {AsyncLoggerMiddleware|LoggerMiddleware} The new middleware.
4654
*/
47-
export function useMongoLogger(optionsOrDatabase?: IUseMongoLoggerOptions | MongoLogDatabaseProvider | null | undefined): LoggerMiddleware {
55+
export function useMongoLogger(optionsOrDatabase?: IUseMongoLoggerOptions | MongoLogDatabaseProvider | null | undefined): AsyncLoggerMiddleware | LoggerMiddleware {
4856
// setup with defaults
4957
let collectionProvider: MongoLogCollectionProvider = () => defaultMongoCollection;
5058
let dbProvider: MongoLogDatabaseProvider = () => MongoDatabase.open();
@@ -91,16 +99,20 @@ export function useMongoLogger(optionsOrDatabase?: IUseMongoLoggerOptions | Mong
9199
}
92100
}
93101

94-
return (type, args) => {
95-
(async () => {
96-
const time = new Date();
102+
return (type: LogType, args: any[], done?: NextFunction) => {
103+
const time = new Date();
97104

98-
const context: IMongoLogContext = {
99-
args,
100-
time,
101-
type
102-
};
105+
if (!done) {
106+
done = () => { };
107+
}
103108

109+
const context: IMongoLogContext = {
110+
args,
111+
time,
112+
type
113+
};
114+
115+
(async () => {
104116
// collect all data for the collection
105117
const connection = await Promise.resolve(dbProvider(context));
106118
const collectionName = await Promise.resolve(collectionProvider(context));
@@ -111,7 +123,11 @@ export function useMongoLogger(optionsOrDatabase?: IUseMongoLoggerOptions | Mong
111123

112124
await collection.insertOne(document);
113125
});
114-
})();
126+
})().then(() => {
127+
done!();
128+
}).catch(error => {
129+
done!(error);
130+
});
115131
};
116132
}
117133

0 commit comments

Comments
 (0)