Install-Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
webBuilder.ConfigureServices(services =>
{
services.AddCrashDumps(Configuration.GetSection("CrashDumps"));
});
});
{
"CrashDumps": {
"Enabled": true,
"FolderPath": "./crash-dumps",
"S3BucketName": "my-bucket",
"S3BucketRegion": "us-west-2",
"S3AccessKeyId": "access-key-id",
"S3SecretAccessKey": "secret-access-key"
}
}
using Amazon.S3;
public static class CrashDumpsExtensions
{
public static IServiceCollection AddCrashDumps(this IServiceCollection services,
IConfigurationSection configuration)
{
var options = configuration.Get();
if (!options.Enabled)
return services;
services.AddSingleton();
services.AddAWSService(new Amazon.S3.AmazonS3Client(
options.S3AccessKeyId,
options.S3SecretAccessKey,
RegionEndpoint.GetBySystemName(options.S3BucketRegion)
));
return services;
}
}
其中,CrashDumpsOptions是一个包含所有必需选项的POCO类,CrashDumpsExceptionHandler是一个IExceptionHandler实现,用于在崩溃时自动转储到AWS S3存储桶中。