generated from amazon-archives/__template_Apache-2.0
-
Notifications
You must be signed in to change notification settings - Fork 33
Closed
Labels
aotarea/loggingCore logging utilityCore logging utilityarea/metricsCore metrics utilityCore metrics utilitybugUnexpected, reproducible and unintended software behaviourUnexpected, reproducible and unintended software behaviour
Description
Expected Behaviour
Logger should work with AoT trimming enabled.
Current Behaviour
The following exception is thrown
10-Oct-2024 9:34:07 AM 2024-10-10T13:34:07.448Z 9bc362e6-76bc-4f22-b004-8c5622ca8078 fail System.InvalidOperationException: Reflection-based serialization has been disabled for this application. Either use the source generator APIs or explicitly configure the 'JsonSerializerOptions.TypeInfoResolver' property.
at System.Text.Json.ThrowHelper.ThrowInvalidOperationException_JsonSerializerIsReflectionDisabled()
at System.Text.Json.JsonSerializerOptions.ConfigureForJsonSerializer()
at System.Text.Json.JsonSerializer.GetTypeInfo(JsonSerializerOptions, Type)
at System.Text.Json.JsonSerializer.GetTypeInfo[T](JsonSerializerOptions)
at System.Text.Json.JsonSerializer.Serialize[TValue](TValue, JsonSerializerOptions )
at AWS.Lambda.Powertools.Logging.Serializers.PowertoolsLoggingSerializer.Serialize(Object, Type)
at AWS.Lambda.Powertools.Logging.Internal.PowertoolsLogger.Log[TState](LogLevel, EventId, TState, Exception, Func`3)
at Microsoft.Extensions.Logging.LoggerExtensions.Log(ILogger , LogLevel, EventId, Exception, String, Object[] )
at Microsoft.Extensions.Logging.LoggerExtensions.LogInformation(ILogger, String , Object[] )
at submit_feedback.Function.FunctionHandlerAsync(SubmitFeedbackRequest request, ILambdaContext context) in ./Function.cs:line 63
at Amazon.Lambda.RuntimeSupport.HandlerWrapper.<>c__DisplayClass14_0`1.<<GetHandlerWrapper>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.InvokeOnceAsync(CancellationToken )
Code snippet
Here are the relevant lines of what I have in my csproj file (Let me know if you need more context):
<PropertyGroup>
<PublishReadyToRun>true</PublishReadyToRun>
<StripSymbols>true</StripSymbols>
<PublishTrimmed>true</PublishTrimmed>
<TrimMode>partial</TrimMode>
</PropertyGroup>
<ItemGroup>
<!-- Exclude EF Core assemblies from being trimmed (not supported) -->
<TrimmerRootAssembly Include="Microsoft.EntityFrameworkCore" />
<TrimmerRootAssembly Include="Microsoft.EntityFrameworkCore.Relational" />
<TrimmerRootAssembly Include="Npgsql.EntityFrameworkCore.PostgreSQL" />
<TrimmerRootAssembly Include="EFCore.NamingConventions" />
</ItemGroup>Here's how I've been able to minimally reproduce this issue:
public class Function
{
private static async Task Main()
{
Console.WriteLine("Starting up");
Func<SubmitFeedbackRequest, ILambdaContext, Task> handler = FunctionHandlerAsync;
await LambdaBootstrapBuilder.Create(handler, new PowertoolsSourceGeneratorSerializer<LambdaFunctionJsonContext>())
.Build()
.RunAsync();
Console.WriteLine("Shutting down");
}
[Logging]
public static async Task FunctionHandlerAsync(SubmitFeedbackRequest request, ILambdaContext context)
{
Logger.LogInformation("Starting up!");
}
}
[JsonSerializable(typeof(SubmitFeedbackRequest))]
public partial class LambdaFunctionJsonContext : JsonSerializerContext { }For reference, here are my package versions:

Possible Solution
No response
Steps to Reproduce
See code snippet.
Powertools for AWS Lambda (.NET) version
latest
AWS Lambda function runtime
dotnet8 (AOT)
Debugging logs
No response
Metadata
Metadata
Assignees
Labels
aotarea/loggingCore logging utilityCore logging utilityarea/metricsCore metrics utilityCore metrics utilitybugUnexpected, reproducible and unintended software behaviourUnexpected, reproducible and unintended software behaviour
Type
Projects
Status
📋 Backlog