Skip to content

Commit

Permalink
feat(logging): replace contextual logger with open telemetry
Browse files Browse the repository at this point in the history
refs #247
  • Loading branch information
ygrishajev committed Jul 9, 2024
1 parent d1ca550 commit 0ef204a
Show file tree
Hide file tree
Showing 18 changed files with 481 additions and 138 deletions.
3 changes: 3 additions & 0 deletions apps/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@
"sql-formatter": "^15.3.2",
"stripe": "^10.14.0",
"tsyringe": "^4.8.0",
"@opentelemetry/instrumentation-http": "^0.52.1",
"@opentelemetry/instrumentation-pino": "^0.41.0",
"@opentelemetry/sdk-node": "^0.52.1",
"uuid": "^9.0.1"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions apps/api/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { Hono } from "hono";
import { cors } from "hono/cors";
import { container } from "tsyringe";

import { HttpLoggerService, LoggerService, RequestStorageService } from "@src/core";
import { HttpLoggerService, LoggerService } from "@src/core";
import packageJson from "../package.json";
import { chainDb, syncUserSchema, userDb } from "./db/dbConnection";
import { apiRouter } from "./routers/apiRouter";
Expand Down Expand Up @@ -59,7 +59,6 @@ const scheduler = new Scheduler({
}
});

appHono.use(container.resolve(RequestStorageService).intercept());
appHono.use(container.resolve(HttpLoggerService).intercept());
appHono.use(
"*",
Expand All @@ -83,6 +82,7 @@ appHono.route("/web3-index", web3IndexRouter);
appHono.route("/dashboard", dashboardRouter);
appHono.route("/internal", internalRouter);

console.log("DEBUG BILLING_ENABLED", BILLING_ENABLED);
// TODO: remove condition once billing is in prod
if (BILLING_ENABLED === "true") {
// eslint-disable-next-line @typescript-eslint/no-var-requires
Expand Down
11 changes: 5 additions & 6 deletions apps/api/src/billing/services/wallet/wallet.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { singleton } from "tsyringe";

import { BillingConfig, InjectBillingConfig } from "@src/billing/providers";
import { RpcMessageService } from "@src/billing/services/rpc-message-service/rpc-message.service";
import { ContextualLoggerService } from "@src/core/services";
import { LoggerService } from "@src/core";

interface SpendingAuthorizationOptions {
address: string;
Expand All @@ -27,13 +27,12 @@ export class WalletService {

private client: SigningStargateClient;

private readonly logger = new LoggerService({ context: WalletService.name });

constructor(
@InjectBillingConfig() private readonly config: BillingConfig,
private readonly rpcMessageService: RpcMessageService,
private readonly logger: ContextualLoggerService
) {
this.logger.setContext({ context: WalletService.name });
}
private readonly rpcMessageService: RpcMessageService
) {}

async createAndAuthorizeTrialSpending({ addressIndex }: { addressIndex: number }) {
const { address } = await this.createWallet({ addressIndex });
Expand Down
2 changes: 1 addition & 1 deletion apps/api/src/core/providers/postgres.provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const pool = new Pool({
connectionString: config.POSTGRES_DB_URI
});

export const pgDatabase = drizzle(pool, { logger: new DefaultLogger({ writer: container.resolve(PostgresLoggerService) }), schema: billingSchemas });
export const pgDatabase = drizzle(pool, { logger: new DefaultLogger({ writer: new PostgresLoggerService() }), schema: billingSchemas });

export type ApiPgSchema = typeof billingSchemas;

Expand Down

This file was deleted.

6 changes: 2 additions & 4 deletions apps/api/src/core/services/http-logger/http-logger.service.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import { Context, Next } from "hono";
import { singleton } from "tsyringe";

import { ContextualLoggerService } from "@src/core/services";
import { LoggerService } from "@src/core";
import type { HonoInterceptor } from "@src/core/types/hono-interceptor.type";

@singleton()
export class HttpLoggerService implements HonoInterceptor {
constructor(private readonly logger: ContextualLoggerService) {
logger.setContext({ context: "HTTP" });
}
private readonly logger = new LoggerService({ context: "HTTP" });

intercept() {
return async (c: Context, next: Next) => {
Expand Down
2 changes: 0 additions & 2 deletions apps/api/src/core/services/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
export * from "@src/core/services/tx/tx.service";
export * from "./logger/logger.service";
export * from "./contextual-logger/contextual-logger.service";
export * from "@src/core/services/http-logger/http-logger.service";
export * from "./request-storage/request-storage.service";
export * from "./postgres-migrator/postgres-migrator.service";
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { LogWriter } from "drizzle-orm/logger";
import { format } from "sql-formatter";
import { singleton } from "tsyringe";

import { ContextualLoggerService } from "@src/core/services/contextual-logger/contextual-logger.service";
import { LoggerService } from "@src/core/services/logger/logger.service";

@singleton()
export class PostgresLoggerService implements LogWriter {
constructor(private readonly logger: ContextualLoggerService) {
logger.setContext({ context: "POSTGRES" });
}
private readonly logger = new LoggerService({ context: "POSTGRES" });

write(message: string) {
let formatted = message.replace(/^Query: /, "");
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions apps/api/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import "reflect-metadata";
import "./open-telemetry";

import { container } from "tsyringe";

Expand Down
10 changes: 10 additions & 0 deletions apps/api/src/open-telemetry.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { registerInstrumentations } from "@opentelemetry/instrumentation";
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
import { PinoInstrumentation } from "@opentelemetry/instrumentation-pino";
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";

new NodeTracerProvider().register();

registerInstrumentations({
instrumentations: [new HttpInstrumentation(), new PinoInstrumentation()]
});
4 changes: 2 additions & 2 deletions apps/api/test/functional/create-wallet.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { USER_WALLET_SCHEMA, UserWalletSchema } from "@src/billing/providers";
import { ApiPgDatabase, POSTGRES_DB } from "@src/core";
import { closeConnections } from "@src/db/dbConnection";

jest.setTimeout(10000);

describe("wallets", () => {
const schema = container.resolve<UserWalletSchema>(USER_WALLET_SCHEMA);
const db = container.resolve<ApiPgDatabase>(POSTGRES_DB);
Expand All @@ -26,8 +28,6 @@ describe("wallets", () => {

describe("POST /v1/wallets", () => {
it("should create a wallet for a user", async () => {
jest.setTimeout(10000);

const userId = faker.string.uuid();
const res = await app.request("/v1/wallets", {
method: "POST",
Expand Down
1 change: 0 additions & 1 deletion apps/api/test/setup-functional-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import dotenv from "dotenv";
import { container } from "tsyringe";

import { PostgresMigratorService } from "@src/core";

dotenv.config({ path: ".env.functional.test" });

beforeAll(async () => {
Expand Down
8 changes: 0 additions & 8 deletions docker-compose.build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,3 @@ services:
target: production
args:
WORKSPACE: apps/stats-web

landing:
image: console-landing:${LANDING_TAG:-latest}
build:
dockerfile: docker/Dockerfile.nextjs
target: production
args:
WORKSPACE: apps/landing
5 changes: 0 additions & 5 deletions docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,3 @@ services:
- '3001:3000'
depends_on:
- api

landing:
restart: always
ports:
- '3002:3000'
12 changes: 0 additions & 12 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,3 @@ services:
- /app/node_modules
- /app/apps/stats-web/node_modules
- /app/apps/stats-web/.next

landing:
build:
target: development
volumes:
- ./apps/landing:/app/apps/landing
- ./package.json:/app/package.json
- ./package-lock.json:/app/package-lock.json
- /app/node_modules
- /app/apps/landing/node_modules
- /app/apps/landing/.next

Loading

0 comments on commit 0ef204a

Please sign in to comment.