Skip to content

Commit 7775787

Browse files
committed
Update logging references in DaprServer
Signed-off-by: Shubham Sharma <[email protected]>
1 parent b34af28 commit 7775787

File tree

11 files changed

+107
-42
lines changed

11 files changed

+107
-42
lines changed

src/implementation/Server/DaprServer.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import HTTPServerActor from './HTTPServer/actor';
3232
import { DaprClientOptions } from '../../types/DaprClientOptions';
3333
import { DaprClient } from '../..';
3434
import { Settings } from '../../utils/Settings.util';
35+
import { Logger } from '../../logger/Logger';
3536

3637
export default class DaprServer {
3738
// App details
@@ -41,6 +42,8 @@ export default class DaprServer {
4142
private readonly daprHost: string;
4243
private readonly daprPort: string;
4344

45+
private readonly logger: Logger;
46+
4447
readonly daprServer: IServer;
4548
readonly pubsub: IServerPubSub;
4649
readonly binding: IServerBinding;
@@ -62,6 +65,7 @@ export default class DaprServer {
6265
this.serverPort = serverPort ?? Settings.getDefaultAppPort(communicationProtocol);
6366
this.daprHost = daprHost ?? Settings.getDefaultHost();
6467
this.daprPort = daprPort ?? Settings.getDefaultPort(communicationProtocol);
68+
this.logger = new Logger(clientOptions.loggerOptions);
6569

6670
// Create a client to interface with the sidecar from the server side
6771
this.client = new DaprClient(daprHost, daprPort, communicationProtocol, clientOptions);
@@ -82,24 +86,24 @@ export default class DaprServer {
8286
// Builder
8387
switch (communicationProtocol) {
8488
case CommunicationProtocolEnum.GRPC: {
85-
const server = new GRPCServer(this.client);
89+
const server = new GRPCServer(this.client, this.logger);
8690
this.daprServer = server;
8791

88-
this.pubsub = new GRPCServerPubSub(server);
89-
this.binding = new GRPCServerBinding(server);
90-
this.invoker = new GRPCServerInvoker(server);
92+
this.pubsub = new GRPCServerPubSub(server, this.logger);
93+
this.binding = new GRPCServerBinding(server, this.logger);
94+
this.invoker = new GRPCServerInvoker(server, this.logger);
9195
this.actor = new GRPCServerActor(server);
9296
break;
9397
}
9498
case CommunicationProtocolEnum.HTTP:
9599
default: {
96-
const server = new HTTPServer(this.client);
100+
const server = new HTTPServer(this.client, this.logger);
97101
this.daprServer = server;
98102

99-
this.pubsub = new HTTPServerPubSub(server);
100-
this.binding = new HTTPServerBinding(server);
101-
this.invoker = new HTTPServerInvoker(server);
102-
this.actor = new HTTPServerActor(server, this.client);
103+
this.pubsub = new HTTPServerPubSub(server, this.logger);
104+
this.binding = new HTTPServerBinding(server, this.logger);
105+
this.invoker = new HTTPServerInvoker(server, this.logger);
106+
this.actor = new HTTPServerActor(server, this.client, this.logger);
103107
break;
104108
}
105109
}

src/implementation/Server/GRPCServer/GRPCServer.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { AppCallbackService } from "../../../proto/dapr/proto/runtime/v1/appcall
1717
import IServer from "../../../interfaces/Server/IServer";
1818
import { DaprClient } from "../../..";
1919
import * as NodeJSUtils from "../../../utils/NodeJS.util";
20+
import { Logger } from "../../../logger/Logger";
2021

2122
// eslint-disable-next-line
2223
export interface IServerType extends grpc.Server { }
@@ -32,21 +33,26 @@ export default class GRPCServer implements IServer {
3233
serverCredentials: grpc.ServerCredentials;
3334
daprSidecarPollingDelayMs = 1000;
3435
client: DaprClient;
36+
private readonly logger: Logger;
3537

36-
constructor(client: DaprClient) {
38+
private readonly LOG_COMPONENT: string = "GRPCServer";
39+
private readonly LOG_AREA: string = "GRPCServer";
40+
41+
constructor(client: DaprClient, logger: Logger) {
3742
this.isInitialized = false;
3843

3944
this.serverHost = "";
4045
this.serverPort = "";
4146
this.client = client;
47+
this.logger = logger;
4248

4349
// Create Server
4450
this.server = new grpc.Server();
4551
this.serverCredentials = grpc.ServerCredentials.createInsecure();
46-
this.serverImpl = new GRPCServerImpl();
52+
this.serverImpl = new GRPCServerImpl(this.logger);
4753

4854
// Add our implementation
49-
console.log("[Dapr-JS][gRPC] Adding Service Implementation - AppCallbackService")
55+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, "Adding Service Implementation - AppCallbackService")
5056
// @ts-ignore
5157
this.server.addService(AppCallbackService, this.serverImpl);
5258
}
@@ -92,9 +98,9 @@ export default class GRPCServer implements IServer {
9298
let isHealthyRetryCount = 0;
9399
const isHealthyMaxRetryCount = 60; // 1s startup delay and we try max for 60s
94100

95-
console.log(`[Dapr-JS] Letting Dapr pick-up the server (Maximum 60s wait time)`);
101+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Letting Dapr pick-up the server (Maximum 60s wait time)`);
96102
while (!isHealthy) {
97-
console.log(`[Dapr-JS] - Waiting till Dapr Started (#${isHealthyRetryCount})`);
103+
this.logger.verbose(this.LOG_COMPONENT, this.LOG_AREA, `Waiting for Dapr to start, retry counter is (#${isHealthyRetryCount})`);
98104
await NodeJSUtils.sleep(this.daprSidecarPollingDelayMs);
99105
isHealthy = await this.client.health.isHealthy();
100106
isHealthyRetryCount++;
@@ -123,14 +129,14 @@ export default class GRPCServer implements IServer {
123129
}
124130

125131
private async initializeBind(): Promise<void> {
126-
console.log(`[Dapr-JS][gRPC] Starting to listen on ${this.serverHost}:${this.serverPort}`);
132+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Starting to listen on ${this.serverHost}:${this.serverPort}`);
127133
return new Promise((resolve, reject) => {
128134
this.server.bindAsync(`${this.serverHost}:${this.serverPort}`, this.serverCredentials, (err, _port) => {
129135
if (err) {
130136
return reject(err);
131137
}
132138

133-
console.log(`[Dapr-JS][gRPC] Listening on ${this.serverHost}:${this.serverPort}`);
139+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Listening on ${this.serverHost}:${this.serverPort}`);
134140
return resolve();
135141
});
136142
})

src/implementation/Server/GRPCServer/GRPCServerImpl.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,23 @@ import { TypeDaprInvokerCallback } from "../../../types/DaprInvokerCallback.type
2222
import * as HttpVerbUtil from "../../../utils/HttpVerb.util";
2323
import { TypeDaprBindingCallback } from "../../../types/DaprBindingCallback.type";
2424
import { TypeDaprPubSubCallback } from "../../../types/DaprPubSubCallback.type";
25+
import { Logger } from "../../../logger/Logger";
2526

2627

2728
// https://github.com/badsyntax/grpc-js-typescript/issues/1#issuecomment-705419742
2829
// @ts-ignore
2930
export default class GRPCServerImpl implements IAppCallbackServer {
31+
private readonly logger: Logger;
32+
33+
private readonly LOG_COMPONENT: string = "GRPCServer";
34+
private readonly LOG_AREA: string = "GRPCServerImpl";
35+
3036
handlersInvoke: { [key: string]: TypeDaprInvokerCallback };
3137
handlersBindings: { [key: string]: TypeDaprBindingCallback };
3238
handlersTopics: { [key: string]: TypeDaprPubSubCallback };
3339

34-
constructor() {
40+
constructor(logger: Logger) {
41+
this.logger = logger;
3542
this.handlersInvoke = {};
3643
this.handlersBindings = {};
3744
this.handlersTopics = {};
@@ -74,7 +81,7 @@ export default class GRPCServerImpl implements IAppCallbackServer {
7481
const handlersInvokeKey = `${methodStr.toLowerCase()}|${method.toLowerCase()}`;
7582

7683
if (!this.handlersInvoke[handlersInvokeKey]) {
77-
console.warn(`[Dapr-JS][gRPC][Invoke] ${methodStr} /${method} was not handled`);
84+
this.logger.warn(this.LOG_COMPONENT, this.LOG_AREA, `${methodStr} /${method} was not handled`)
7885
return;
7986
}
8087

@@ -112,7 +119,7 @@ export default class GRPCServerImpl implements IAppCallbackServer {
112119
const handlerKey = this.createInputBindingHandlerKey(req.getName());
113120

114121
if (!this.handlersBindings[handlerKey]) {
115-
console.warn(`[Dapr-JS][gRPC][Bindings] Event for binding: "${handlerKey}" was not handled`);
122+
this.logger.warn(this.LOG_COMPONENT, this.LOG_AREA, `Event for binding: "${handlerKey}" was not handled`);
116123
return;
117124
}
118125

@@ -140,7 +147,7 @@ export default class GRPCServerImpl implements IAppCallbackServer {
140147
const handlerKey = this.createPubSubSubscriptionHandlerKey(req.getPubsubName(), req.getTopic());
141148

142149
if (!this.handlersTopics[handlerKey]) {
143-
console.warn(`[Dapr-JS][gRPC][PubSub] Event from topic: "${handlerKey}" was not handled`);
150+
this.logger.warn(this.LOG_COMPONENT, this.LOG_AREA, `Event from topic: "${handlerKey}" was not handled`);
144151
return;
145152
}
146153

@@ -160,7 +167,7 @@ export default class GRPCServerImpl implements IAppCallbackServer {
160167
res.setStatus(TopicEventResponse.TopicEventResponseStatus.SUCCESS);
161168
} catch (e) {
162169
// @todo: for now we drop, maybe we should allow retrying as well more easily?
163-
console.error(e);
170+
this.logger.error(this.LOG_COMPONENT, this.LOG_AREA, `Error handling topic event: ${e}`);
164171
res.setStatus(TopicEventResponse.TopicEventResponseStatus.DROP);
165172
}
166173

src/implementation/Server/GRPCServer/binding.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,24 @@ limitations under the License.
1414
import GRPCServer from './GRPCServer';
1515
import { TypeDaprBindingCallback } from '../../../types/DaprBindingCallback.type';
1616
import IServerBinding from '../../../interfaces/Server/IServerBinding';
17+
import { Logger } from '../../../logger/Logger';
1718

1819
// https://docs.dapr.io/reference/api/bindings_api/
1920
export default class DaprBinding implements IServerBinding {
2021
server: GRPCServer;
22+
private readonly logger: Logger;
2123

22-
constructor(server: GRPCServer) {
24+
private readonly LOG_COMPONENT: string = "GRPCServer";
25+
private readonly LOG_AREA: string = "Binding";
26+
27+
constructor(server: GRPCServer, logger: Logger) {
2328
this.server = server;
29+
this.logger = logger;
2430
}
2531

2632
// Receive an input from an external system
2733
async receive(bindingName: string, cb: TypeDaprBindingCallback): Promise<any> {
28-
console.log(`Registering GRPC onBindingInput Handler: Binding = ${bindingName}`);
34+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Registering GRPC onBindingInput Handler: Binding = ${bindingName}`);
2935
this.server.getServerImpl().registerInputBindingHandler(bindingName, cb);
3036
}
3137
}

src/implementation/Server/GRPCServer/invoker.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,24 @@ import { TypeDaprInvokerCallback } from '../../../types/DaprInvokerCallback.type
1616
import { InvokerListenOptionsType } from '../../../types/InvokerListenOptions.type';
1717
import { HttpMethod } from '../../../enum/HttpMethod.enum';
1818
import IServerInvoker from '../../../interfaces/Server/IServerInvoker';
19+
import { Logger } from '../../../logger/Logger';
1920

2021
// https://docs.dapr.io/reference/api/service_invocation_api/
2122
export default class DaprInvoker implements IServerInvoker {
2223
server: GRPCServer;
24+
private readonly logger: Logger;
2325

24-
constructor(server: GRPCServer) {
26+
private readonly LOG_COMPONENT: string = "GRPCServer";
27+
private readonly LOG_AREA: string = "Invoker";
28+
29+
constructor(server: GRPCServer, logger: Logger) {
2530
this.server = server;
31+
this.logger = logger;
2632
}
2733

2834
async listen(methodName: string, cb: TypeDaprInvokerCallback, options: InvokerListenOptionsType = {}): Promise<any> {
2935
const httpMethod: HttpMethod = options?.method?.toLowerCase() as HttpMethod || HttpMethod.GET;
30-
console.log(`Registering onInvoke Handler ${httpMethod} /${methodName}`);
36+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Registering onInvoke Handler ${httpMethod} /${methodName}`)
3137
this.server.getServerImpl().registerOnInvokeHandler(httpMethod, methodName, cb);
3238
}
3339
}

src/implementation/Server/GRPCServer/pubsub.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,23 @@ limitations under the License.
1414
import GRPCServer from "./GRPCServer";
1515
import { TypeDaprPubSubCallback } from "../../../types/DaprPubSubCallback.type";
1616
import IServerPubSub from "../../../interfaces/Server/IServerPubSub";
17+
import { Logger } from "../../../logger/Logger";
1718

1819
// https://docs.dapr.io/reference/api/pubsub_api/
1920
export default class DaprPubSub implements IServerPubSub {
2021
server: GRPCServer;
22+
private readonly logger: Logger;
2123

22-
constructor(server: GRPCServer) {
24+
private readonly LOG_COMPONENT: string = "GRPCServer";
25+
private readonly LOG_AREA: string = "PubSub";
26+
27+
constructor(server: GRPCServer, logger: Logger) {
2328
this.server = server;
29+
this.logger = logger;
2430
}
2531

2632
async subscribe(pubSubName: string, topic: string, cb: TypeDaprPubSubCallback): Promise<void> {
27-
console.log(`Registering onTopicEvent Handler: PubSub = ${pubSubName}; Topic = ${topic}`);
33+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Registering onTopicEvent Handler: PubSub = ${pubSubName}; Topic = ${topic}`)
2834
this.server.getServerImpl().registerPubSubSubscriptionHandler(pubSubName, topic, cb);
2935
}
3036
}

src/implementation/Server/HTTPServer/HTTPServer.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import IServer from "../../../interfaces/Server/IServer";
1818
import * as NodeJSUtils from "../../../utils/NodeJS.util";
1919
import { DaprClient } from "../../..";
2020
import { createHttpTerminator } from 'http-terminator';
21+
import { Logger } from "../../../logger/Logger";
2122

2223
// eslint-disable-next-line
2324
export interface IServerImplType extends HTTPServerImpl { }
@@ -33,11 +34,16 @@ export default class HTTPServer implements IServer {
3334
serverImpl: IServerImplType;
3435
daprSidecarPollingDelayMs = 1000;
3536
client: DaprClient;
37+
private readonly logger: Logger;
3638

37-
constructor(client: DaprClient) {
39+
private readonly LOG_COMPONENT: string = "HTTPServer";
40+
private readonly LOG_AREA: string = "HTTPServer";
41+
42+
constructor(client: DaprClient, logger: Logger) {
3843
this.serverHost = "";
3944
this.serverPort = "";
4045
this.client = client;
46+
this.logger = logger;
4147

4248
this.isInitialized = false;
4349

@@ -103,14 +109,14 @@ export default class HTTPServer implements IServer {
103109

104110
// Initialize Server Listener
105111
await this.server.start(parseInt(port, 10));
106-
console.log(`[Dapr-JS] Listening on ${port}`);
112+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Listening on ${port}`);
107113
this.serverAddress = `http://${host}:${port}`;
108114

109115
// Add PubSub Routes
110-
console.log(`[Dapr API][PubSub] Registering ${this.serverImpl.pubSubSubscriptionRoutes.length} PubSub Subscriptions`);
116+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Registering ${this.serverImpl.pubSubSubscriptionRoutes.length} PubSub Subscriptions`);
111117
this.server.get('/dapr/subscribe', (req, res) => {
112118
res.send(this.serverImpl.pubSubSubscriptionRoutes);
113-
console.log(`[Dapr API][PubSub] Registered ${this.serverImpl.pubSubSubscriptionRoutes.length} PubSub Subscriptions`);
119+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Registered ${this.serverImpl.pubSubSubscriptionRoutes.length} PubSub Subscriptions`);
114120
});
115121

116122
// We need to call the Singleton to start listening on the port, else Dapr will not pick it up correctly
@@ -120,9 +126,9 @@ export default class HTTPServer implements IServer {
120126
let isHealthyRetryCount = 0;
121127
const isHealthyMaxRetryCount = 60; // 1s startup delay and we try max for 60s
122128

123-
console.log(`[Dapr-JS] Letting Dapr pick-up the server (Maximum 60s wait time)`);
129+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, `Letting Dapr pick-up the server (Maximum 60s wait time)`);
124130
while (!isHealthy) {
125-
console.log(`[Dapr-JS] - Waiting till Dapr Started (#${isHealthyRetryCount})`);
131+
this.logger.verbose(this.LOG_COMPONENT, this.LOG_AREA, `Waiting for Dapr to start, retry counter is (#${isHealthyRetryCount})`);
126132
await NodeJSUtils.sleep(this.daprSidecarPollingDelayMs);
127133
isHealthy = await this.client.health.isHealthy();
128134
isHealthyRetryCount++;
@@ -133,7 +139,7 @@ export default class HTTPServer implements IServer {
133139
}
134140

135141
// We are initialized
136-
console.log(`[Dapr-JS] Server Started`);
142+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, "Server Started");
137143
this.isInitialized = true;
138144
}
139145

src/implementation/Server/HTTPServer/actor.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,22 @@ import IResponse from '../../../types/http/IResponse';
2121
import { GetRegisteredActorsType } from '../../../types/response/GetRegisteredActors.type';
2222
import BufferSerializer from '../../../actors/runtime/BufferSerializer';
2323
import { DaprClient } from '../../..';
24+
import { Logger } from '../../../logger/Logger';
2425

2526
// https://docs.dapr.io/reference/api/bindings_api/
2627
export default class HTTPServerActor implements IServerActor {
2728
private readonly server: HTTPServer;
2829
private readonly client: DaprClient;
2930
private readonly serializer: BufferSerializer;
31+
private readonly logger: Logger;
3032

31-
constructor(server: HTTPServer, client: DaprClient) {
33+
private readonly LOG_COMPONENT: string = "HTTPServer";
34+
private readonly LOG_AREA: string = "Actors";
35+
36+
constructor(server: HTTPServer, client: DaprClient, logger: Logger) {
3237
this.client = client;
3338
this.server = server;
39+
this.logger = logger;
3440
this.serializer = new BufferSerializer();
3541
}
3642

@@ -52,7 +58,7 @@ export default class HTTPServerActor implements IServerActor {
5258
* This will create the routes that get invoked by the Dapr Sidecar
5359
*/
5460
async init(): Promise<void> {
55-
console.log("[Actors] Initializing");
61+
this.logger.info(this.LOG_COMPONENT, this.LOG_AREA, "Initializing Actors");
5662

5763
// Probes the application for a response to state that the app is healthy and running
5864
// https://docs.dapr.io/reference/api/actors_api/#health-check

src/implementation/Server/HTTPServer/binding.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,21 @@ limitations under the License.
1414
import HTTPServer from './HTTPServer';
1515
import HttpStatusCode from '../../../enum/HttpStatusCode.enum';
1616
import IServerBinding from '../../../interfaces/Server/IServerBinding';
17+
import { Logger } from '../../../logger/Logger';
1718

1819
// https://docs.dapr.io/reference/api/bindings_api/
1920
type FunctionDaprInputCallback = (data: any) => Promise<any>;
2021

2122
export default class HTTPServerBinding implements IServerBinding {
2223
private readonly server: HTTPServer;
24+
private readonly logger: Logger;
2325

24-
constructor(server: HTTPServer) {
26+
private readonly LOG_COMPONENT: string = "HTTPServer";
27+
private readonly LOG_AREA: string = "Binding";
28+
29+
constructor(server: HTTPServer, logger: Logger) {
2530
this.server = server;
31+
this.logger = logger;
2632
}
2733

2834
// Receive an input from an external system
@@ -47,7 +53,7 @@ export default class HTTPServerBinding implements IServerBinding {
4753
} catch (e) {
4854
res.statusCode = HttpStatusCode.INTERNAL_SERVER_ERROR;
4955

50-
console.debug(e);
56+
this.logger.error(this.LOG_COMPONENT, this.LOG_AREA, `receive failed: ${e}`);
5157

5258
return res.end(JSON.stringify({
5359
error: "COULD_NOT_PROCESS_CALLBACK",

0 commit comments

Comments
 (0)