Skip to content

Commit ddcc092

Browse files
committed
Add more logs to csharp example
1 parent b07f03c commit ddcc092

File tree

7 files changed

+59
-12
lines changed

7 files changed

+59
-12
lines changed

application/backend-credit-card-enrollment/backend-c#/Common/Command/CommandController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ protected void ProcessCommand(Command command, CommandHandler commandHandler) {
2929

3030
_postgresTransactionalEventStore.AbortDanglingTransactionsAndReturnConnectionToPool();
3131
_mongoTransactionalProjectionOperator.AbortDanglingTransactionsAndReturnSessionToPool();
32+
_logger.LogDebug("Successfully processed command: {CommandType}", command.GetType().Name);
3233
} catch (Exception ex) {
3334
_postgresTransactionalEventStore.AbortDanglingTransactionsAndReturnConnectionToPool();
3435
_mongoTransactionalProjectionOperator.AbortDanglingTransactionsAndReturnSessionToPool();

application/backend-credit-card-enrollment/backend-c#/Common/EventStore/PostgresTransactionalEventStore.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,22 @@ public class PostgresTransactionalEventStore
1111
private readonly Serializer _serializer;
1212
private readonly Deserializer _deserializer;
1313
private readonly string _eventStoreTable;
14+
private readonly ILogger<PostgresTransactionalEventStore> _logger;
1415
private NpgsqlConnection? _connection;
1516
private NpgsqlTransaction? _activeTransaction;
1617

1718
public PostgresTransactionalEventStore(
1819
PostgresConnectionPool connectionPool,
1920
Serializer serializer,
2021
Deserializer deserializer,
21-
string eventStoreTable
22+
string eventStoreTable,
23+
ILogger<PostgresTransactionalEventStore> logger
2224
) {
2325
_connectionPool = connectionPool;
2426
_serializer = serializer;
2527
_deserializer = deserializer;
2628
_eventStoreTable = eventStoreTable;
29+
_logger = logger;
2730
_connection = null;
2831
_activeTransaction = null;
2932
}
@@ -125,7 +128,7 @@ public void AbortDanglingTransactionsAndReturnConnectionToPool()
125128
_activeTransaction.Rollback();
126129
_activeTransaction = null;
127130
} catch (Exception ex) {
128-
// todo log error
131+
_logger.LogError(ex, "Failed to rollback PG transaction");
129132
}
130133
}
131134

@@ -134,7 +137,7 @@ public void AbortDanglingTransactionsAndReturnConnectionToPool()
134137
_connection.Close();
135138
_connection = null;
136139
} catch (Exception ex) {
137-
// todo log error
140+
_logger.LogError(ex, "Failed to release PG connection");
138141
}
139142
}
140143
}
@@ -192,7 +195,6 @@ private void SaveSerializedEvent(SerializedEvent.SerializedEvent serializedEvent
192195
try {
193196
command.ExecuteNonQuery();
194197
} catch (Exception ex) {
195-
// todo log error
196198
throw new Exception($"Failed to save event: {serializedEvent.EventId}", ex);
197199
}
198200
}

application/backend-credit-card-enrollment/backend-c#/Common/Projection/MongoTransactionalProjectorOperator.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,18 @@ namespace CreditCardEnrollment.Common.Projection;
77
public class MongoTransactionalProjectionOperator {
88
private readonly MongoSessionPool _sessionPool;
99
private readonly string _databaseName;
10+
private readonly ILogger<MongoTransactionalProjectionOperator> _logger;
1011
private IClientSessionHandle? _session;
1112
private IMongoDatabase? _database;
1213

13-
public MongoTransactionalProjectionOperator(MongoSessionPool sessionPool, string databaseName) {
14+
public MongoTransactionalProjectionOperator(
15+
MongoSessionPool sessionPool,
16+
string databaseName,
17+
ILogger<MongoTransactionalProjectionOperator> logger
18+
) {
1419
_sessionPool = sessionPool;
1520
_databaseName = databaseName;
21+
_logger = logger;
1622
_session = null;
1723
_database = null;
1824
}
@@ -69,13 +75,13 @@ public void AbortDanglingTransactionsAndReturnSessionToPool() {
6975
_session.AbortTransaction();
7076
}
7177
} catch (Exception ex) {
72-
// todo: log error
78+
_logger.LogError(ex, "Failed to abort Mongo transaction");
7379
}
7480

7581
try {
7682
_session.Dispose();
7783
} catch (Exception ex) {
78-
// todo: log error
84+
_logger.LogError(ex, "Failed to release Mongo session");
7985
}
8086

8187
_session = null;

application/backend-credit-card-enrollment/backend-c#/Common/Projection/ProjectionController.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ protected string ProcessProjectionHttpRequest(
2424
ProjectionHandler projectionHandler,
2525
string projectionName) {
2626
try {
27-
_logger.LogDebug("Starting to process projection for event name: {EventName}", ambarHttpRequest.SerializedEvent.EventName);
27+
_logger.LogDebug(
28+
"Starting to process projection for event name: {EventName} using handler: {HandlerName}",
29+
ambarHttpRequest.SerializedEvent.EventName,
30+
projectionHandler.GetType().Name
31+
);
2832
var @event = _deserializer.Deserialize(ambarHttpRequest.SerializedEvent);
2933

3034
_mongoOperator.StartTransaction();
@@ -37,6 +41,11 @@ protected string ProcessProjectionHttpRequest(
3741

3842
if (isAlreadyProjected) {
3943
_mongoOperator.AbortDanglingTransactionsAndReturnSessionToPool();
44+
_logger.LogDebug(
45+
"Duplication projection ignored for event name: {EventName} using handler: {HandlerName}",
46+
ambarHttpRequest.SerializedEvent.EventName,
47+
projectionHandler.GetType().Name
48+
);
4049
return AmbarResponseFactory.SuccessResponse();
4150
}
4251

@@ -54,13 +63,30 @@ protected string ProcessProjectionHttpRequest(
5463
_mongoOperator.CommitTransaction();
5564
_mongoOperator.AbortDanglingTransactionsAndReturnSessionToPool();
5665

66+
_logger.LogDebug(
67+
"Projection successfully processed for event name: {EventName} using handler: {HandlerName}",
68+
ambarHttpRequest.SerializedEvent.EventName,
69+
projectionHandler.GetType().Name
70+
);
5771
return AmbarResponseFactory.SuccessResponse();
5872
} catch (Exception ex) when (ex.Message?.StartsWith("Unknown event type") == true) {
5973
_mongoOperator.AbortDanglingTransactionsAndReturnSessionToPool();
74+
75+
_logger.LogDebug(
76+
"Unknown event in projection ignored for event name: {EventName} using handler: {HandlerName}",
77+
ambarHttpRequest.SerializedEvent.EventName,
78+
projectionHandler.GetType().Name
79+
);
6080
return AmbarResponseFactory.SuccessResponse();
6181
} catch (Exception ex) {
6282
_mongoOperator.AbortDanglingTransactionsAndReturnSessionToPool();
63-
_logger.LogError("Exception in ProcessProjectionHttpRequest: {0}, {1}", ex.Message, ex.StackTrace);
83+
_logger.LogError(
84+
"Exception in ProcessProjectionHttpRequest: {0}, {1}. For event name: {EventName} using handler: {HandlerName}",
85+
ex.Message,
86+
ex.StackTrace,
87+
ambarHttpRequest.SerializedEvent.EventName,
88+
projectionHandler.GetType().Name
89+
);
6490
return AmbarResponseFactory.RetryResponse(ex);
6591
}
6692
}

application/backend-credit-card-enrollment/backend-c#/Common/Query/QueryController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ protected object ProcessQuery(Query query, QueryHandler queryHandler) {
2222
_mongoTransactionalProjectionOperator.CommitTransaction();
2323
_mongoTransactionalProjectionOperator.AbortDanglingTransactionsAndReturnSessionToPool();
2424

25+
_logger.LogDebug("Successfully processed query: {QueryType}", query.GetType().Name);
2526
return result;
2627
} catch (Exception ex) {
2728
_mongoTransactionalProjectionOperator.AbortDanglingTransactionsAndReturnSessionToPool();

application/backend-credit-card-enrollment/backend-c#/Common/Reaction/ReactionController.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ ILogger<ReactionController> logger
2525

2626
protected string ProcessReactionHttpRequest(AmbarHttpRequest ambarHttpRequest, ReactionHandler reactionHandler) {
2727
try {
28-
_logger.LogDebug("Starting to process reaction for event name: {EventName}", ambarHttpRequest.SerializedEvent.EventName);
28+
_logger.LogDebug(
29+
"Starting to process reaction for event name: {EventName} using handler: {HandlerName}",
30+
ambarHttpRequest.SerializedEvent.EventName,
31+
reactionHandler.GetType().Name
32+
);
2933
_postgresTransactionalEventStore.BeginTransaction();
3034
_mongoTransactionalProjectionOperator.StartTransaction();
3135
reactionHandler.React(_deserializer.Deserialize(ambarHttpRequest.SerializedEvent));
@@ -35,6 +39,11 @@ protected string ProcessReactionHttpRequest(AmbarHttpRequest ambarHttpRequest, R
3539
_postgresTransactionalEventStore.AbortDanglingTransactionsAndReturnConnectionToPool();
3640
_mongoTransactionalProjectionOperator.AbortDanglingTransactionsAndReturnSessionToPool();
3741

42+
_logger.LogDebug(
43+
"Reaction successfully processed for event name: {EventName} using handler: {HandlerName}",
44+
ambarHttpRequest.SerializedEvent.EventName,
45+
reactionHandler.GetType().Name
46+
);
3847
return AmbarResponseFactory.SuccessResponse();
3948
} catch (Exception ex) when (ex.Message?.StartsWith("Unknown event type") == true) {
4049
_postgresTransactionalEventStore.AbortDanglingTransactionsAndReturnConnectionToPool();

application/backend-credit-card-enrollment/backend-c#/Program.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@
2626
var deserializer = provider.GetRequiredService<Deserializer>();
2727
var serializer = provider.GetRequiredService<Serializer>();
2828
var eventStoreTable = postgresTableName;
29+
var logger = provider.GetRequiredService<ILogger<PostgresTransactionalEventStore>>();
2930

30-
return new PostgresTransactionalEventStore(pool, serializer, deserializer, eventStoreTable);
31+
return new PostgresTransactionalEventStore(pool, serializer, deserializer, eventStoreTable, logger);
3132
});
3233

3334
var mongoConnectionString =
@@ -40,7 +41,8 @@
4041
builder.Services.AddScoped<MongoTransactionalProjectionOperator>(provider =>
4142
{
4243
var sessionPool = provider.GetRequiredService<MongoSessionPool>();
43-
return new MongoTransactionalProjectionOperator(sessionPool, mongoDatabaseName);
44+
var logger = provider.GetRequiredService<ILogger<MongoTransactionalProjectionOperator>>();
45+
return new MongoTransactionalProjectionOperator(sessionPool, mongoDatabaseName, logger);
4446
});
4547

4648
AddScopedInheritors<CommandController>(builder.Services);

0 commit comments

Comments
 (0)