Skip to content

Commit 5eff958

Browse files
authored
Add global loggers (#143)
1 parent d6fd6fc commit 5eff958

File tree

15 files changed

+147
-141
lines changed

15 files changed

+147
-141
lines changed

core/fastify/logSetting.ts

Lines changed: 0 additions & 29 deletions
This file was deleted.

core/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ export * from "./database/dbConnect";
22
export * from "./env";
33
export * from "./error/customError";
44
export * from "./error/errorHandler";
5-
export * from "./fastify/logSetting";
65
export * from "./sdk/sdk";

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"node-cron": "^3.0.2",
6060
"p-queue": "^7.3.4",
6161
"pg": "^8.11.0",
62+
"pino": "^8.15.1",
6263
"pino-pretty": "^10.0.0",
6364
"prisma": "^5.2.0",
6465
"uuidv4": "^6.2.13",

server/controller/tx-update-listener.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
1-
import { FastifyInstance } from "fastify";
21
import { connectToDatabase } from "../../core";
32
import { getTxById } from "../../src/db/transactions/getTxById";
3+
import { logger } from "../../src/utils/logger";
44
import {
55
formatSocketMessage,
66
getStatusMessageAndConnectionStatus,
77
} from "../helpers/websocket";
88
import { subscriptionsData } from "../schemas/websocket";
99

10-
export const startTxUpdatesNotificationListener = async (
11-
server: FastifyInstance,
12-
): Promise<void> => {
10+
export const startTxUpdatesNotificationListener = async (): Promise<void> => {
1311
try {
1412
// Connect to the DB
1513
const knex = await connectToDatabase();
16-
server.log.info(`Starting update notification listener`);
14+
logger.server.info(`Starting update notification listener`);
1715
// Acquire a connection
1816
const connection = await knex.client.acquireConnection();
1917
connection.query("LISTEN updated_transaction_data");
2018

2119
connection.on(
2220
"notification",
2321
async (msg: { channel: string; payload: string }) => {
24-
server.log.debug(
22+
logger.server.debug(
2523
`Received notification: ${msg.channel}, ${msg.payload}`,
2624
);
2725
const parsedPayload = JSON.parse(msg.payload);
@@ -47,20 +45,20 @@ export const startTxUpdatesNotificationListener = async (
4745
);
4846

4947
connection.on("end", async () => {
50-
server.log.info(`Connection database ended`);
48+
logger.server.info(`Connection database ended`);
5149
knex.client.releaseConnection(connection);
5250
await knex.destroy();
53-
server.log.info(`Released sql connection : on end`);
51+
logger.server.info(`Released sql connection : on end`);
5452
});
5553

5654
connection.on("error", async (err: any) => {
57-
server.log.error(err);
55+
logger.server.error(err);
5856
knex.client.releaseConnection(connection);
5957
await knex.destroy();
60-
server.log.info(`Released sql connection: on error`);
58+
logger.server.info(`Released sql connection: on error`);
6159
});
6260
} catch (error) {
63-
server.log.error(`Error in notification listener: ${error}`);
61+
logger.server.error(`Error in notification listener: ${error}`);
6462
throw error;
6563
}
6664
};

server/helpers/server.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@ import fastifyExpress from "@fastify/express";
33
import { TypeBoxTypeProvider } from "@fastify/type-provider-typebox";
44
import WebSocketPlugin from "@fastify/websocket";
55
import fastify, { FastifyInstance } from "fastify";
6-
import { env, errorHandler, getLogSettings } from "../../core";
6+
import { env, errorHandler } from "../../core";
77
import { apiRoutes } from "../../server/api";
8+
import { logger } from "../../src/utils/logger";
89
import { performHTTPAuthentication } from "../middleware/auth";
910
import { openapi } from "./openapi";
1011

11-
const createServer = async (serverName: string): Promise<FastifyInstance> => {
12-
const logOptions = getLogSettings(serverName);
13-
12+
const createServer = async (): Promise<FastifyInstance> => {
1413
const server: FastifyInstance = fastify({
15-
logger: logOptions ?? true,
14+
logger: logger.server,
1615
disableRequestLogging: true,
1716
}).withTypeProvider<TypeBoxTypeProvider>();
1817

@@ -53,11 +52,11 @@ const createServer = async (serverName: string): Promise<FastifyInstance> => {
5352
request.headers.upgrade &&
5453
request.headers.upgrade.toLowerCase() === "websocket"
5554
) {
56-
server.log.debug("WebSocket connection attempt");
55+
logger.server.debug("WebSocket connection attempt");
5756
// ToDo: Uncomment WebSocket Authentication post Auth SDK is implemented
5857
// await performWSAuthentication(request, reply);
5958
} else {
60-
server.log.debug("Regular HTTP request");
59+
logger.server.debug("Regular HTTP request");
6160
await performHTTPAuthentication(request, reply);
6261
}
6362
});

server/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { env } from "../core";
2+
import { logger } from "../src/utils/logger";
23
import { startTxUpdatesNotificationListener } from "./controller/tx-update-listener";
34
import createServer from "./helpers/server";
45

56
const main = async () => {
6-
const server = await createServer("API-Server");
7+
const server = await createServer();
78

89
server.listen(
910
{
@@ -12,15 +13,15 @@ const main = async () => {
1213
},
1314
(err) => {
1415
if (err) {
15-
server.log.error(err);
16+
logger.server.error(err);
1617
process.exit(1);
1718
}
1819
},
1920
);
2021

2122
try {
2223
// Check for the Tables Existence post startup
23-
await startTxUpdatesNotificationListener(server);
24+
await startTxUpdatesNotificationListener();
2425
//check walletType and make sure i got all the access i need
2526
} catch (err) {
2627
console.log(err);

src/utils/logger.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { FastifyBaseLogger } from "fastify";
2+
import Pino, { LoggerOptions } from "pino";
3+
import { env } from "../../core/env";
4+
5+
const defaultConfig: LoggerOptions = {
6+
redact: ["headers.authorization"],
7+
transport: {
8+
target: "pino-pretty",
9+
options: {
10+
translateTime: "HH:MM:ss Z",
11+
ignore: "pid,hostname,reqId",
12+
singleLine: true,
13+
},
14+
},
15+
level:
16+
env.NODE_ENV === "production"
17+
? "info"
18+
: env.NODE_ENV === "development"
19+
? "debug"
20+
: env.NODE_ENV === "testing"
21+
? "debug"
22+
: "trace",
23+
};
24+
25+
interface Logger {
26+
server: FastifyBaseLogger;
27+
worker: FastifyBaseLogger;
28+
}
29+
30+
const createLogger = (prefix: string) => {
31+
return Pino({ ...defaultConfig, msgPrefix: prefix });
32+
};
33+
34+
export const logger: Logger = {
35+
server: createLogger("[Server] "),
36+
worker: createLogger("[Worker] "),
37+
};

test/e2e/setup-init.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

worker/controller/blockchainReader.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
11
import { BigNumber } from "ethers";
2-
import { FastifyInstance } from "fastify";
32
import { env } from "../../core";
43
import { TransactionStatusEnum } from "../../server/schemas/transaction";
54
import { getSentTxs } from "../../src/db/transactions/getSentTxs";
65
import { updateTx } from "../../src/db/transactions/updateTx";
6+
import { logger } from "../../src/utils/logger";
77
import { getTransactionReceiptWithBlockDetails } from "../services/blockchain";
88

99
const MINED_TX_CRON_ENABLED = env.MINED_TX_CRON_ENABLED;
1010

11-
export const checkForMinedTransactionsOnBlockchain = async (
12-
server: FastifyInstance,
13-
) => {
11+
export const checkForMinedTransactionsOnBlockchain = async () => {
1412
try {
1513
if (!MINED_TX_CRON_ENABLED) {
16-
server.log.warn("Mined Tx Cron is disabled");
14+
logger.worker.warn("Mined Tx Cron is disabled");
1715
return;
1816
}
19-
server.log.info(
17+
logger.worker.info(
2018
"Running Cron to check for mined transactions on blockchain",
2119
);
2220
const transactions = await getSentTxs();
2321

2422
if (transactions.length === 0) {
25-
server.log.warn("No transactions to check for mined status");
23+
logger.worker.warn("No transactions to check for mined status");
2624
return;
2725
}
2826

2927
const txReceiptsWithChainId = await getTransactionReceiptWithBlockDetails(
30-
server,
3128
transactions,
3229
);
3330

@@ -40,7 +37,7 @@ export const checkForMinedTransactionsOnBlockchain = async (
4037
txReceiptData.effectiveGasPrice != BigNumber.from(-1) &&
4138
txReceiptData.timestamp != -1
4239
) {
43-
server.log.info(
40+
logger.worker.info(
4441
`Got receipt for tx: ${txReceiptData.txHash}, queueId: ${txReceiptData.queueId}, effectiveGasPrice: ${txReceiptData.effectiveGasPrice}`,
4542
);
4643

@@ -60,7 +57,7 @@ export const checkForMinedTransactionsOnBlockchain = async (
6057

6158
return;
6259
} catch (error) {
63-
server.log.error(error);
60+
logger.worker.error(error);
6461
return;
6562
}
6663
};

worker/controller/listener.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,49 @@
1-
import { FastifyInstance } from "fastify";
21
import { connectToDatabase } from "../../core";
2+
import { logger } from "../../src/utils/logger";
33
import { queue } from "../services/pQueue";
44
import { processTransaction } from "./processTransaction";
55

6-
const beginTransactionProcessing = (server: FastifyInstance) => {
6+
const beginTransactionProcessing = () => {
77
return async () => {
8-
server.log.info(`--- processing Q request started at ${new Date()} ---`);
9-
await processTransaction(server);
10-
server.log.info(`--- processing Q request ended at ${new Date()} ---`);
8+
logger.worker.info(`--- processing Q request started at ${new Date()} ---`);
9+
await processTransaction();
10+
logger.worker.info(`--- processing Q request ended at ${new Date()} ---`);
1111
};
1212
};
1313

14-
export const startNotificationListener = async (
15-
server: FastifyInstance,
16-
): Promise<void> => {
14+
export const startNotificationListener = async (): Promise<void> => {
1715
try {
18-
server.log.info(`Starting notification listener`);
16+
logger.worker.info(`Starting notification listener`);
1917
// Acquire a connection
2018
const knex = await connectToDatabase();
2119
const connection = await knex.client.acquireConnection();
2220
connection.query("LISTEN new_transaction_data");
2321

2422
// Adding to Queue to Process Requests
25-
queue.add(beginTransactionProcessing(server));
23+
queue.add(beginTransactionProcessing());
2624

2725
connection.on(
2826
"notification",
2927
async (msg: { channel: string; payload: string }) => {
30-
queue.add(beginTransactionProcessing(server));
28+
queue.add(beginTransactionProcessing());
3129
},
3230
);
3331

3432
connection.on("end", async () => {
35-
server.log.info(`Connection database ended`);
33+
logger.worker.info(`Connection database ended`);
3634
await knex.destroy();
3735
knex.client.releaseConnection(connection);
38-
server.log.info(`Released sql connection : on end`);
36+
logger.worker.info(`Released sql connection : on end`);
3937
});
4038

4139
connection.on("error", async (err: any) => {
42-
server.log.error(err);
40+
logger.worker.error(err);
4341
knex.client.releaseConnection(connection);
4442
await knex.destroy();
45-
server.log.info(`Released sql connection: on error`);
43+
logger.worker.info(`Released sql connection: on error`);
4644
});
4745
} catch (error) {
48-
server.log.error(`Error in notification listener: ${error}`);
46+
logger.worker.error(`Error in notification listener: ${error}`);
4947
throw error;
5048
}
5149
};

0 commit comments

Comments
 (0)