nestjs-pino
Advanced tools
Comparing version 2.0.2-alpha.32170c to 2.0.2-alpha.4116cf
@@ -10,3 +10,3 @@ "use strict"; | ||
decoratedLoggers.add(context); | ||
return common_1.Inject(getLoggerToken(context)); | ||
return (0, common_1.Inject)(getLoggerToken(context)); | ||
} | ||
@@ -13,0 +13,0 @@ exports.InjectPinoLogger = InjectPinoLogger; |
@@ -63,4 +63,4 @@ "use strict"; | ||
Logger = __decorate([ | ||
common_1.Injectable(), | ||
__param(1, common_1.Inject(params_1.PARAMS_PROVIDER_TOKEN)), | ||
(0, common_1.Injectable)(), | ||
__param(1, (0, common_1.Inject)(params_1.PARAMS_PROVIDER_TOKEN)), | ||
__metadata("design:paramtypes", [PinoLogger_1.PinoLogger, Object]) | ||
@@ -67,0 +67,0 @@ ], Logger); |
@@ -34,3 +34,3 @@ "use strict"; | ||
}; | ||
const decorated = InjectPinoLogger_1.createProvidersForDecorated(); | ||
const decorated = (0, InjectPinoLogger_1.createProvidersForDecorated)(); | ||
return { | ||
@@ -48,3 +48,3 @@ module: LoggerModule_1, | ||
}; | ||
const decorated = InjectPinoLogger_1.createProvidersForDecorated(); | ||
const decorated = (0, InjectPinoLogger_1.createProvidersForDecorated)(); | ||
const providers = [ | ||
@@ -79,5 +79,5 @@ Logger_1.Logger, | ||
LoggerModule = LoggerModule_1 = __decorate([ | ||
common_1.Global(), | ||
common_1.Module({ providers: [Logger_1.Logger], exports: [Logger_1.Logger] }), | ||
__param(0, common_1.Inject(params_1.PARAMS_PROVIDER_TOKEN)), | ||
(0, common_1.Global)(), | ||
(0, common_1.Module)({ providers: [Logger_1.Logger], exports: [Logger_1.Logger] }), | ||
__param(0, (0, common_1.Inject)(params_1.PARAMS_PROVIDER_TOKEN)), | ||
__metadata("design:paramtypes", [Object]) | ||
@@ -100,4 +100,4 @@ ], LoggerModule); | ||
// be called without arguments | ||
storage_1.storage.run(req.log, next); | ||
storage_1.storage.run(new storage_1.Store(req.log), next); | ||
} | ||
//# sourceMappingURL=LoggerModule.js.map |
{ | ||
"name": "nestjs-pino", | ||
"version": "2.0.2-alpha.32170c", | ||
"version": "2.0.2-alpha.4116cf", | ||
"description": "Pino logger for NestJS", | ||
@@ -58,3 +58,3 @@ "main": "index.js", | ||
"eslint-plugin-prettier": "^3.4.1", | ||
"jest": "27.0.6", | ||
"jest": "27.1.0", | ||
"memorystream": "^0.3.1", | ||
@@ -61,0 +61,0 @@ "pino-http": "^5.6.0", |
@@ -25,3 +25,4 @@ import * as pino from 'pino'; | ||
get logger(): pino.Logger; | ||
assign(fields: pino.Bindings): void; | ||
} | ||
export {}; |
@@ -14,2 +14,3 @@ "use strict"; | ||
}; | ||
var PinoLogger_1; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -27,3 +28,3 @@ exports.PinoLogger = exports.__resetOutOfContextForTests = void 0; | ||
exports.__resetOutOfContextForTests = __resetOutOfContextForTests; | ||
let PinoLogger = class PinoLogger { | ||
let PinoLogger = PinoLogger_1 = class PinoLogger { | ||
constructor({ pinoHttp, renameContext }) { | ||
@@ -35,3 +36,3 @@ this.context = ''; | ||
} | ||
else if (params_1.isPassedLogger(pinoHttp)) { | ||
else if ((0, params_1.isPassedLogger)(pinoHttp)) { | ||
outOfContext = pinoHttp.logger; | ||
@@ -97,10 +98,18 @@ } | ||
get logger() { | ||
var _a; | ||
// outOfContext is always set in runtime before starts using | ||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
return storage_1.storage.getStore() || outOfContext; | ||
return ((_a = storage_1.storage.getStore()) === null || _a === void 0 ? void 0 : _a.logger) || outOfContext; | ||
} | ||
assign(fields) { | ||
const store = storage_1.storage.getStore(); | ||
if (!store) { | ||
throw new Error(`${PinoLogger_1.name}: unable to assign extra fields out of request scope`); | ||
} | ||
store.logger = store.logger.child(fields); | ||
} | ||
}; | ||
PinoLogger = __decorate([ | ||
common_1.Injectable({ scope: common_1.Scope.TRANSIENT }), | ||
__param(0, common_1.Inject(params_1.PARAMS_PROVIDER_TOKEN)), | ||
PinoLogger = PinoLogger_1 = __decorate([ | ||
(0, common_1.Injectable)({ scope: common_1.Scope.TRANSIENT }), | ||
__param(0, (0, common_1.Inject)(params_1.PARAMS_PROVIDER_TOKEN)), | ||
__metadata("design:paramtypes", [Object]) | ||
@@ -107,0 +116,0 @@ ], PinoLogger); |
@@ -11,3 +11,3 @@ <p align="center"> | ||
</a> | ||
<img alt="GitHub branch checks state" src="https://img.shields.io/github/checks-status/iamolegga/nestjs-pino/master"> | ||
<img alt="GitHub branch checks state" src="https://badgen.net/github/checks/iamolegga/nestjs-pino"> | ||
<a href="https://codeclimate.com/github/iamolegga/nestjs-pino/test_coverage"> | ||
@@ -378,2 +378,34 @@ <img src="https://api.codeclimate.com/v1/badges/2821150bb93506cb66fc/test_coverage" /> | ||
## Assign extra fields for future calls | ||
You can enrich logs before calling log methods. It's possible by using `assign` method of `PinoLogger` instance. As `Logger` class is used only for NestJS built-in `Logger` substitution via `app.useLogger(...)` this feature is only limited to `PinoLogger` class. Example: | ||
```ts | ||
@Controller('/') | ||
class TestController { | ||
constructor( | ||
private readonly logger: PinoLogger, | ||
private readonly service: MyService, | ||
) {} | ||
@Get() | ||
get() { | ||
// assign extra fields in one place... | ||
this.logger.assign({ userID: '42' }); | ||
return this.service.test(); | ||
} | ||
} | ||
@Injectable() | ||
class MyService { | ||
private readonly logger = new Logger(MyService.name); | ||
test() { | ||
// ...and it will be logged in another one | ||
this.logger.log('hello world'); | ||
} | ||
} | ||
``` | ||
## Migration | ||
@@ -380,0 +412,0 @@ |
/// <reference types="node" /> | ||
import { AsyncLocalStorage } from 'async_hooks'; | ||
import { Logger } from 'pino'; | ||
export declare const storage: AsyncLocalStorage<Logger>; | ||
export declare class Store { | ||
logger: Logger; | ||
constructor(logger: Logger); | ||
} | ||
export declare const storage: AsyncLocalStorage<Store>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.storage = void 0; | ||
exports.storage = exports.Store = void 0; | ||
const async_hooks_1 = require("async_hooks"); | ||
class Store { | ||
constructor(logger) { | ||
this.logger = logger; | ||
} | ||
} | ||
exports.Store = Store; | ||
exports.storage = new async_hooks_1.AsyncLocalStorage(); | ||
//# sourceMappingURL=storage.js.map |
50676
468
606