mirror of
https://github.com/apricote/Listory.git
synced 2026-01-13 21:21:02 +00:00
feat(observability): Replace Prometheus package with OpenTelemetry
This commit is contained in:
parent
f67383b761
commit
6b1640b753
22 changed files with 2391 additions and 568 deletions
|
|
@ -1,9 +1,18 @@
|
|||
import { Module, Global } from "@nestjs/common";
|
||||
import { Logger } from "./logger.service";
|
||||
import { Module, RequestMethod } from "@nestjs/common";
|
||||
import { LoggerModule as PinoLoggerModule } from "nestjs-pino";
|
||||
import { logger } from "./logger";
|
||||
|
||||
@Global()
|
||||
@Module({
|
||||
providers: [Logger],
|
||||
exports: [Logger],
|
||||
imports: [
|
||||
PinoLoggerModule.forRoot({
|
||||
pinoHttp: {
|
||||
logger: logger,
|
||||
autoLogging: true,
|
||||
quietReqLogger: true,
|
||||
redact: ["req.headers", "res.headers"],
|
||||
},
|
||||
exclude: [{ method: RequestMethod.ALL, path: "/" }],
|
||||
}),
|
||||
],
|
||||
})
|
||||
export class LoggerModule {}
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
import { Injectable, Scope, ConsoleLogger } from "@nestjs/common";
|
||||
|
||||
@Injectable({ scope: Scope.TRANSIENT })
|
||||
export class Logger extends ConsoleLogger {}
|
||||
32
src/logger/logger.ts
Normal file
32
src/logger/logger.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { context, trace } from "@opentelemetry/api";
|
||||
import Pino, { Logger, LoggerOptions } from "pino";
|
||||
|
||||
export const loggerOptions: LoggerOptions = {
|
||||
level: "debug",
|
||||
formatters: {
|
||||
level(label) {
|
||||
return { level: label };
|
||||
},
|
||||
log(object) {
|
||||
const span = trace.getSpan(context.active());
|
||||
if (!span) return { ...object };
|
||||
const { spanId, traceId } = trace
|
||||
.getSpan(context.active())
|
||||
?.spanContext();
|
||||
return { ...object, spanId, traceId };
|
||||
},
|
||||
},
|
||||
transport:
|
||||
process.env.NODE_ENV === "local"
|
||||
? {
|
||||
target: "pino-pretty",
|
||||
options: {
|
||||
colorize: true,
|
||||
levelFirst: true,
|
||||
translateTime: true,
|
||||
},
|
||||
}
|
||||
: null,
|
||||
};
|
||||
|
||||
export const logger: Logger = Pino(loggerOptions);
|
||||
Loading…
Add table
Add a link
Reference in a new issue