Skip to content

Commit 60c34a5

Browse files
hai-koAlexNi245
andauthored
Logs (#510)
* Billboard widget enhancements (#509) * add viewerCount polling * widget demo showcases siwe * widgetDemo supports new siwe message * use dark dm3 logo * add messages to state * increase version to 0.2.6 * format vite config * feat: better logs --------- Co-authored-by: Alex <[email protected]>
1 parent 3f0bed7 commit 60c34a5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+270
-193
lines changed

Procfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web: yarn workspace dm3-offchain-resolver-backend start
1+
web: yarn start

packages/backend/src/cleanup/cleanUpPendingMessages.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { IDatabase } from '../persistance/getDatabase';
2-
import { log } from 'dm3-lib-shared/dist.backend';
2+
import { logInfo } from 'dm3-lib-shared/dist.backend';
33

44
//1 day
55
const DEFAULT_CLEANUP_INTERVAL = 86400000;
66

77
async function onCleanUpPendingMessages(db: IDatabase, ttl: number) {
88
const now = new Date().getTime();
99
const expiryDate = now - ttl;
10-
log('[Clean up] Delete expired messages', 'info');
10+
logInfo('[Clean up] Delete expired messages');
1111
await db.deleteExpiredMessages(expiryDate);
1212
}
1313

@@ -21,7 +21,7 @@ export function startCleanUpPendingMessagesJob(
2121
if (ttl <= 0) {
2222
return;
2323
}
24-
log('[Clean up] Start Clean up job', 'info');
24+
logInfo('[Clean up] Start Clean up job');
2525
return setInterval(() => {
2626
onCleanUpPendingMessages(db, ttl);
2727
}, cleaningInterval);

packages/backend/src/config/getDeliveryServiceProperties.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { parse } from 'yaml';
22
import { existsSync, readFileSync } from 'fs';
33
import { resolve } from 'path';
4-
import { log, validateSchema } from 'dm3-lib-shared/dist.backend';
4+
import { logInfo, validateSchema } from 'dm3-lib-shared/dist.backend';
55
import {
66
schema,
77
DeliveryServiceProperties,
@@ -19,7 +19,7 @@ export function getDeliveryServiceProperties(
1919
defaultDeliveryServiceProperties: DeliveryServiceProperties = DEFAULT_DELIVERY_SERVICE_PROPERTIES,
2020
): DeliveryServiceProperties {
2121
if (!existsSync(path)) {
22-
log('Config file not found. Default Config is used', 'info');
22+
logInfo('Config file not found. Default Config is used');
2323
return defaultDeliveryServiceProperties;
2424
}
2525
const yamlString = readFileSync(path, { encoding: 'utf-8' });

packages/backend/src/index.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { getDatabase } from './persistance/getDatabase';
1515
import Profile from './profile';
1616
import RpcProxy from './rpc/rpc-proxy';
1717
import Storage from './storage';
18-
import { log } from 'dm3-lib-shared/dist.backend';
18+
import { logInfo } from 'dm3-lib-shared/dist.backend';
1919

2020
import {
2121
errorHandler,
@@ -83,5 +83,9 @@ app.use(express.static(path.join(__dirname, '../../web/build')));
8383
const port = process.env.PORT || '8080';
8484

8585
server.listen(port, () => {
86-
log('[Server] listening at port ' + port + ' and dir ' + __dirname, 'info');
86+
logInfo({
87+
text: '[Server] listening',
88+
port,
89+
dir: __dirname,
90+
});
8791
});

packages/backend/src/messaging.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
checkToken,
1010
incomingMessage,
1111
} from 'dm3-lib-delivery/dist.backend';
12-
import { log } from 'dm3-lib-shared';
12+
1313
const pendingMessageSchema = {
1414
type: 'object',
1515
properties: {

packages/backend/src/rpc/methods/handleSubmitMessage.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { validateSchema } from 'dm3-lib-shared/dist.backend';
44
import 'dotenv/config';
55
import express from 'express';
66
import { WithLocals } from '../../types';
7-
import { log } from 'dm3-lib-shared';
7+
import { logError } from 'dm3-lib-shared';
88

99
export async function handleSubmitMessage(
1010
req: express.Request & { app: WithLocals },
@@ -17,12 +17,12 @@ export async function handleSubmitMessage(
1717
const envelop = JSON.parse(stringifiedEnvelop);
1818

1919
if (!token) {
20-
log('Auth token missing', 'error');
20+
logError('Auth token missing');
2121
return res.status(400).send('Auth token missing');
2222
}
2323

2424
if (!envelop) {
25-
log('Envelop missing', 'error');
25+
logError('Envelop missing');
2626

2727
return res.status(400).send('Envelop missing');
2828
}
@@ -62,7 +62,10 @@ export async function handleSubmitMessage(
6262
method: 'RPC SUBMIT MESSAGE',
6363
error,
6464
});
65-
log('[handleSubmitMessage]' + error, 'error');
65+
logError({
66+
text: '[handleSubmitMessage]',
67+
error,
68+
});
6669

6770
return res.status(400).send();
6871
}

packages/billboard-client/src/api/external/getExternalApi.ts

+4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { getViewerCountHandler } from './handler/getViewerCount';
55
import { getMessagesHandler } from './handler/getMessages';
66
import { IDatabase } from '../../persitance/getDatabase';
77
import { IViewerService } from '../../service/viewerService/IViewerService';
8+
import { logDebug, logInfo } from 'dm3-lib-shared';
89

910
export function getExternalApi(db: IDatabase, viewerService: IViewerService) {
1011
const app = express();
@@ -13,6 +14,9 @@ export function getExternalApi(db: IDatabase, viewerService: IViewerService) {
1314
app.post('/rpc', async (req: express.Request, res: express.Response) => {
1415
const { method, params } = req.body;
1516

17+
logInfo({ msg: '/rpc', method });
18+
logDebug({ msg: '/rpc', method, params });
19+
1620
//Create Json Rpc request Id
1721
const id = v4();
1822

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import axios from 'axios';
22
import { normalizeEnsName } from 'dm3-lib-profile';
3-
import { log } from 'dm3-lib-shared';
3+
import { logError } from 'dm3-lib-shared';
44

55
export async function getChallenge(
66
dsUrl: string,
@@ -11,8 +11,12 @@ export async function getChallenge(
1111
try {
1212
const { data } = await axios.get(url);
1313
return data.challenge;
14-
} catch (e) {
15-
log("can't get challenge from ds " + dsUrl, 'error');
14+
} catch (error) {
15+
logError({
16+
text: "can't get challenge from ds",
17+
error,
18+
dsUrl,
19+
});
1620
return null;
1721
}
1822
}

packages/billboard-client/src/api/internal/rest/getIncomingMessages.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import axios, { AxiosResponse } from 'axios';
22
import { EncryptionEnvelop } from 'dm3-lib-messaging';
3-
import { log } from 'dm3-lib-shared';
3+
import { logError } from 'dm3-lib-shared';
44

55
/**
66
* Retrieves incoming messages for a specific ENS name.
@@ -24,13 +24,12 @@ export async function getIncomingMessages(
2424
);
2525

2626
return response.data;
27-
} catch (e) {
28-
log(
29-
`Failed to retrieve incoming messages for ds ${dsUrl}` +
30-
JSON.stringify(e),
31-
32-
'error',
33-
);
27+
} catch (error) {
28+
logError({
29+
text: `Failed to retrieve incoming messages for ds`,
30+
dsUrl,
31+
error,
32+
});
3433
return null;
3534
}
3635
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import axios from 'axios';
22
import { normalizeEnsName } from 'dm3-lib-profile';
3-
import { log } from 'dm3-lib-shared';
3+
import { logError } from 'dm3-lib-shared';
44

55
export async function getNewToken(
66
dsUrl: string,
@@ -11,8 +11,11 @@ export async function getNewToken(
1111
try {
1212
const { data } = await axios.post(url, { signature });
1313
return data.token;
14-
} catch (e) {
15-
log("can't get new token from ds: " + JSON.stringify(e), 'error');
14+
} catch (error) {
15+
logError({
16+
text: `can't get new token from ds`,
17+
error,
18+
});
1619
return null;
1720
}
1821
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import axios from 'axios';
22
import { SignedUserProfile, normalizeEnsName } from 'dm3-lib-profile';
3-
import { log } from 'dm3-lib-shared';
3+
import { logError } from 'dm3-lib-shared';
44

55
export async function submitUserProfile(
66
dsUrl: string,
@@ -12,11 +12,8 @@ export async function submitUserProfile(
1212
try {
1313
const { data } = await axios.post(url, signedUserProfile);
1414
return data;
15-
} catch (e) {
16-
log(
17-
"can't submit userProfile to ds " + dsUrl + ' ' + JSON.stringify(e),
18-
'error',
19-
);
15+
} catch (error) {
16+
logError({ text: "can't submit userProfile to ds ", dsUrl, error });
2017
return null;
2118
}
2219
}

packages/billboard-client/src/api/internal/ws/getDeliveryServiceWSConnections.ts

+17-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EncryptionEnvelop } from 'dm3-lib-messaging';
22
import { DeliveryServiceProfile } from 'dm3-lib-profile';
3-
import { log } from 'dm3-lib-shared';
3+
import { logError, logInfo } from 'dm3-lib-shared';
44

55
import { io, Socket } from 'socket.io-client';
66

@@ -21,23 +21,29 @@ export const getDeliveryServiceWSClient = (
2121
},
2222
});
2323
c.on('connect', () => {
24-
log(`Connected to Delivery Service ${ds.url}`, 'info');
24+
logInfo({
25+
text: `Connected to Delivery Service`,
26+
dsUrl: ds.url,
27+
});
2528
res(c);
2629
});
27-
c.on('connect_error', (err: any) => {
28-
log(
29-
`Connection error to Delivery Service ${ds.url} ` +
30-
JSON.stringify(err),
31-
'error',
32-
);
30+
c.on('connect_error', (error: any) => {
31+
logError({
32+
text: `Connection error to Delivery Service`,
33+
dsUrl: ds.url,
34+
error,
35+
});
3336

34-
rej(err);
37+
rej(error);
3538
});
3639
});
37-
log(`Register listener`, 'info');
40+
logInfo(`Register listener`);
3841
//register listners
3942
client.on('disconnect', () => {
40-
log(`disconnected from deliveryService ${ds.url}`, 'info');
43+
logInfo({
44+
text: `disconnected from deliveryService `,
45+
dsUrl: ds.url,
46+
});
4147
});
4248
client.on('message', onMessage);
4349

packages/billboard-client/src/getBillboardClientApp.ts

+13-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import bodyParser from 'body-parser';
2-
import { log } from 'dm3-lib-shared';
2+
import { logDebug, logInfo } from 'dm3-lib-shared';
33
import { ethers } from 'ethers';
44
import express from 'express';
55
import http from 'http';
@@ -29,7 +29,10 @@ export const getBillboardClientApp = async (
2929

3030
//Readng the ENV config file
3131
const config = ConfigService().readConfigFromEnv();
32-
log('[getBillboardClientApp] config ' + JSON.stringify(config), 'debug');
32+
logDebug({
33+
text: '[getBillboardClientApp] config ',
34+
config,
35+
});
3336

3437
//Each Ens name provided in the config file is an billboard instance
3538
//Right now we're using one profile and hence one private key for all billboards
@@ -38,10 +41,10 @@ export const getBillboardClientApp = async (
3841
ensName,
3942
privateKey: config.privateKey,
4043
}));
41-
log(
42-
'[getBillboardClientApp] billboards ' + JSON.stringify(billboards),
43-
'debug',
44-
);
44+
logDebug({
45+
text: '[getBillboardClientApp] billboards',
46+
billboards,
47+
});
4548

4649
//Register services
4750
const viewerService = await ViewerService(httpServer);
@@ -58,7 +61,10 @@ export const getBillboardClientApp = async (
5861
app.use(getExternalApi(db, viewerService));
5962

6063
httpServer.listen(port, () => {
61-
log('billboard client listening at port ' + port, 'info');
64+
logInfo({
65+
text: 'billboard client listening at port ',
66+
port,
67+
});
6268
});
6369

6470
//In oder to finish the test everything has to be cleaned up

packages/billboard-client/src/service/dsManager/DsManagerImpl.ts

+16-9
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
ProfileKeys,
66
SignedUserProfile,
77
} from 'dm3-lib-profile';
8-
import { log } from 'dm3-lib-shared';
8+
import { logDebug, logError, logInfo } from 'dm3-lib-shared';
99
import { ethers } from 'ethers';
1010
import { Socket } from 'socket.io-client';
1111
import { IDatabase } from '../../persitance/getDatabase';
@@ -56,7 +56,7 @@ Initializes the connection to delivery services.
5656
@returns A promise that resolves when the connection initialization is complete.
5757
*/
5858
async function connect() {
59-
log('Start to initialize connection to delivery services', 'info');
59+
logInfo('Start to initialize connection to delivery services');
6060
//Get all delivery service profiles
6161
const billboardsWithProfile = await getBillboardProfile(
6262
provider,
@@ -83,7 +83,7 @@ Initializes the connection to delivery services.
8383
authenticatedBillboards,
8484
encryptAndStoreMessage(onMessage),
8585
);
86-
log('Finished delivery service initialization', 'info');
86+
logInfo('Finished delivery service initialization');
8787
}
8888

8989
/**
@@ -129,10 +129,14 @@ Encrypts and stores a message to redis using the provided billboard's keypairs a
129129
JSON.parse(encryptionEnvelop.message),
130130
),
131131
) as Message;
132-
log(
133-
'decryptedMessage' + JSON.stringify(decryptedMessage),
134-
'debug',
135-
);
132+
logInfo({
133+
msg: 'encryptAndStoreMessage',
134+
metadata: decryptedMessage.metadata,
135+
});
136+
logDebug({
137+
msg: 'encryptAndStoreMessage',
138+
decryptedMessage,
139+
});
136140
broadcastMessage(
137141
billboardWithDsProfile.ensName,
138142
decryptedMessage,
@@ -141,8 +145,11 @@ Encrypts and stores a message to redis using the provided billboard's keypairs a
141145
billboardWithDsProfile.ensName,
142146
decryptedMessage,
143147
);
144-
} catch (err: any) {
145-
log("Can't decrypt message " + JSON.stringify(err), 'error');
148+
} catch (error: any) {
149+
logError({
150+
text: `Can't decrypt message`,
151+
error,
152+
});
146153
}
147154
};
148155
}

0 commit comments

Comments
 (0)