Skip to content

Commit da3ad17

Browse files
authored
fix: add uma logger (#66)
1 parent 0f40c5d commit da3ad17

File tree

11 files changed

+891
-73
lines changed

11 files changed

+891
-73
lines changed

apps/node/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@
3030
},
3131
"dependencies": {
3232
"@repo/indexer": "workspace:*",
33-
"@repo/persistence-example": "workspace:*",
3433
"@repo/indexer-api": "workspace:*",
34+
"@repo/persistence-example": "workspace:*",
3535
"@repo/template": "workspace:*",
36+
"@uma/logger": "^1.3.0",
3637
"dotenv": "^16.4.5",
3738
"winston": "^3.13.1"
3839
}

apps/node/src/app.ts

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,12 @@ import * as Template from "@repo/template";
55
import * as Indexer from "@repo/indexer";
66
import * as PersistenceExample from "@repo/persistence-example";
77
import * as IndexerApi from "@repo/indexer-api";
8-
9-
import { createLogger, format, transports } from "winston";
10-
11-
// Create the logger instance
12-
const logger = createLogger({
13-
level: "info", // Set the default log level
14-
format: format.combine(
15-
format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
16-
format.errors({ stack: true }),
17-
format.printf(({ timestamp, level, message, ...meta }) => {
18-
const metaString = Object.keys(meta).length
19-
? JSON.stringify(meta, null, 2)
20-
: "";
21-
return `[${timestamp}] ${level.toUpperCase()}: ${message} ${metaString}`;
22-
}),
23-
),
24-
25-
transports: [
26-
new transports.Console(), // Log to the console
27-
],
28-
});
8+
import { Logger } from "@uma/logger";
299

3010
dotenv.config();
3111

12+
const logger = Logger;
13+
3214
async function run() {
3315
const { APP } = process.env;
3416
assert(APP, 'Specify the application to start with "APP=appname pnpm start"');
@@ -51,5 +33,5 @@ async function run() {
5133
}
5234

5335
run()
54-
.then((x) => x && logger.info(x))
36+
.then((x) => x && logger.info({ at: "app", message: x }))
5537
.catch(console.log);

packages/indexer-api/src/database/database.provider.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,17 @@ export async function connectToDatabase(
77
) {
88
try {
99
const database = await createDataSource(databaseConfig).initialize();
10-
logger.info("Postgres connection established");
10+
logger.info({
11+
at: "IndexerAPI#connectToDatabase",
12+
message: "Postgres connection established",
13+
});
1114
return database;
1215
} catch (error) {
13-
logger.error("Unable to connect to database", error);
16+
logger.error({
17+
at: "IndexerAPI#connectToDatabase",
18+
message: "Unable to connect to database",
19+
error,
20+
});
1421
throw error;
1522
}
1623
}

packages/indexer-api/src/main.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,17 @@ export async function connectToDatabase(
1111
) {
1212
try {
1313
const database = await createDataSource(databaseConfig).initialize();
14-
logger.info("Postgres connection established");
14+
logger.info({
15+
at: "IndexerAPI#connectToDatabase",
16+
message: "Postgres connection established",
17+
});
1518
return database;
1619
} catch (error) {
17-
logger.error("Unable to connect to database", error);
20+
logger.error({
21+
at: "IndexerAPI#connectToDatabase",
22+
message: "Unable to connect to database",
23+
error,
24+
});
1825
throw error;
1926
}
2027
}
@@ -53,6 +60,7 @@ export async function Main(
5360

5461
logger.info({
5562
message: `Starting indexer api on port ${port}`,
63+
at: "main.ts",
5664
});
5765
void (await new Promise((res) => {
5866
app.listen(port, () => res(app));

packages/indexer-database/src/utils/BaseRepository.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ export class BaseRepository {
2222
.returning("*")
2323
.execute();
2424
this.logger.info({
25+
at: "BaseRepository#insert",
2526
message: `Saved ${data.length} ${repository.metadata.name} events`,
2627
});
2728
return savedData.generatedMaps as Entity[];
2829
} catch (error) {
2930
this.logger.error({
31+
at: "BaseRepository#insert",
3032
message: `There was an error while saving ${repository.metadata.name} events`,
3133
error,
3234
});

packages/indexer/src/database/database.provider.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,17 @@ export async function connectToDatabase(
77
) {
88
try {
99
const database = await createDataSource(databaseConfig).initialize();
10-
logger.info("Postgres connection established");
10+
logger.info({
11+
at: "Indexer#connectToDatabase",
12+
message: "Postgres connection established",
13+
});
1114
return database;
1215
} catch (error) {
13-
logger.error("Unable to connect to database", error);
16+
logger.error({
17+
at: "Indexer#connectToDatabase",
18+
message: "Unable to connect to database",
19+
error,
20+
});
1421
throw error;
1522
}
1623
}

packages/indexer/src/main.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,20 @@ async function initializeRedis(
3333

3434
return new Promise<Redis>((resolve, reject) => {
3535
redis.on("ready", () => {
36-
logger.info("Redis connection established.", config);
36+
logger.info({
37+
at: "Indexer#initializeRedis",
38+
message: "Redis connection established",
39+
config,
40+
});
3741
resolve(redis);
3842
});
3943

4044
redis.on("error", (err) => {
41-
logger.error("Redis connection error:", err);
45+
logger.error({
46+
at: "Indexer#initializeRedis",
47+
message: "Redis connection failed",
48+
error: err,
49+
});
4250
reject(err);
4351
});
4452
});
@@ -122,16 +130,17 @@ export async function Main(config: parseEnv.Config, logger: winston.Logger) {
122130
let exitRequested = false;
123131
process.on("SIGINT", () => {
124132
if (!exitRequested) {
125-
logger.info(
126-
"\nWait for shutdown, or press Ctrl+C again to forcefully exit.",
127-
);
133+
logger.info({
134+
at: "Indexer#Main",
135+
message: "Wait for shutdown, or press Ctrl+C again to forcefully exit.",
136+
});
128137
spokePoolIndexers.map((s) => s.stopGracefully());
129138
hubPoolIndexer.stopGracefully();
130139
} else {
131-
logger.info("\nForcing exit...");
140+
logger.info({ at: "Indexer#Main", message: "Forcing exit..." });
132141
redis?.quit();
133142
postgres?.destroy();
134-
logger.info("Exiting indexer");
143+
logger.info({ at: "Indexer#Main", message: "Exiting indexer" });
135144
across.utils.delay(5).finally(() => process.exit());
136145
}
137146
});
@@ -162,5 +171,5 @@ export async function Main(config: parseEnv.Config, logger: winston.Logger) {
162171

163172
redis?.quit();
164173
postgres?.destroy();
165-
logger.info("Exiting indexer");
174+
logger.info({ at: "Indexer#Main", message: "Exiting indexer" });
166175
}

packages/indexer/src/services/HubPoolIndexerDataHandler.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ export class HubPoolIndexerDataHandler implements IndexerDataHandler {
5252
lastFinalisedBlock: number,
5353
) {
5454
this.logger.info({
55-
message: "HubPoolIndexerDataHandler::Processing block range",
55+
at: "HubPoolIndexerDataHandler::processBlockRange",
56+
message: "Processing block range",
5657
blockRange,
5758
lastFinalisedBlock,
5859
identifier: this.getDataIdentifier(),
@@ -63,14 +64,17 @@ export class HubPoolIndexerDataHandler implements IndexerDataHandler {
6364
}
6465
const events = await this.fetchEventsByRange(blockRange);
6566
this.logger.info({
66-
message: "HubPoolIndexerDataHandler::Found events",
67+
at: "HubPoolIndexerDataHandler::processBlockRange",
68+
message: "Found events",
6769
events: {
6870
proposedRootBundleEvents: events.proposedRootBundleEvents.length,
6971
rootBundleExecutedEvents: events.rootBundleExecutedEvents.length,
7072
rootBundleCanceledEvents: events.rootBundleCanceledEvents.length,
7173
rootBundleDisputedEvents: events.rootBundleDisputedEvents.length,
7274
setPoolRebalanceRouteEvents: events.setPoolRebalanceRouteEvents.length,
7375
},
76+
blockRange,
77+
identifier: this.getDataIdentifier(),
7478
});
7579
await this.storeEvents(events, lastFinalisedBlock);
7680
}

packages/indexer/src/services/SpokePoolIndexerDataHandler.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ export class SpokePoolIndexerDataHandler implements IndexerDataHandler {
6161
lastFinalisedBlock: number,
6262
) {
6363
this.logger.info({
64-
message: "SpokePoolIndexerDataHandler::Processing block range",
64+
at: "SpokePoolIndexerDataHandler::processBlockRange",
65+
message: "Processing block range",
6566
blockRange,
6667
lastFinalisedBlock,
6768
identifier: this.getDataIdentifier(),
@@ -79,7 +80,8 @@ export class SpokePoolIndexerDataHandler implements IndexerDataHandler {
7980
return acc + Object.values(speedUps).length;
8081
}, 0);
8182
this.logger.info({
82-
message: "SpokePoolIndexerDataHandler::Found events",
83+
at: "SpokePoolIndexerDataHandler::processBlockRange",
84+
message: "Found events",
8385
events: {
8486
v3FundsDepositedEvents: events.v3FundsDepositedEvents.length,
8587
filledV3RelayEvents: events.filledV3RelayEvents.length,
@@ -90,6 +92,8 @@ export class SpokePoolIndexerDataHandler implements IndexerDataHandler {
9092
events.executedRelayerRefundRootEvents.length,
9193
tokensBridgedEvents: events.tokensBridgedEvents.length,
9294
},
95+
blockRange,
96+
identifier: this.getDataIdentifier(),
9397
});
9498
const storedEvents = await this.storeEvents(events, lastFinalisedBlock);
9599
await this.spokePoolProcessor.process(storedEvents);

packages/indexer/src/utils/contractUtils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ export function getHubPoolClient(
144144
maxBlockLookBack,
145145
};
146146
logger.info({
147+
at: "getHubPoolClient",
147148
message: "Initializing hubpool",
148149
chainId,
149150
...eventSearchConfig,

0 commit comments

Comments
 (0)