-
Notifications
You must be signed in to change notification settings - Fork 207
Closed
Labels
Description
I am using Blazor Wasm Hosted Project in VS2022 preview 3.1 with .NET 6 preview 7.
My program.cs is using new minimal API approach.
The problem i am running into is that Table Serilog is not getting created, even if i manually create the table there is not log inserted into the table.
In the F12 Browser Tools i do see Network Request going from Blazor wasm client to server, Serilog.Debugging.SelfLog.Enable never hits.
Request URL: https://localhost:5001/ingest
Request Method: POST
Status Code: 201
What am i missing ?
Here is the program.cs
program.cs
using XXXXXXX.Server.SerilogEnrichers;
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.ResponseCompression;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Tokens;
using Microsoft.OpenApi.Models;
using XXXXXXXX.Server.SignalRHub;
using Newtonsoft.Json.Serialization;
using Serilog;
using Serilog.Events;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Reflection;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using XXXXXXX.Server;
using Serilog.Core;
using GetInLineV6New.Server.DbModels;
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.AspNetCore.Components;
var levelSwitch = new LoggingLevelSwitch();
levelSwitch.MinimumLevel = LogEventLevel.Verbose;
Log.Logger = (Serilog.ILogger)new LoggerConfiguration()
.MinimumLevel.ControlledBy(levelSwitch)
// .Filter.ControlledBy(filterSwitch)
// .Filter.ByExcluding(expr)
.Enrich.FromLogContext()
.Enrich.WithUserName()
.Enrich.WithIPAddress()
.Enrich.WithProperty("FromSerilOg", "XXXXXXX")
.CreateBootstrapLogger();
Serilog.Debugging.SelfLog.Enable(msg =>
{
Console.WriteLine(msg);
Debugger.Break();
});
var builder = WebApplication.CreateBuilder(args);
Host.CreateDefaultBuilder(args)
.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
);
ApplicationInsightsServiceOptions aiOptions = new ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
aiOptions.InstrumentationKey = builder.Configuration["ApplicationInsights:InstrumentationKey"];
aiOptions.EnableQuickPulseMetricStream = true;
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddHttpContextAccessor();
builder.Services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
builder.Services.AddSignalR();
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
builder.Services.AddResponseCompression(opts =>
{
opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
new[] { "application/octet-stream" });
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddHttpContextAccessor();
var app = builder.Build();
app.UseResponseCompression();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseSerilogIngestion();
//app.UseSerilogRequestLogging(); //This throws error
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapHub<XXXXeHub>("/chathub");
endpoints.MapFallbackToFile("index.html");
});
app.Run()
appsetting.json
{
"ConnectionStrings": {
"DatabaseConsString": "Server=tcp:XXXXXXX.database.windows.net,1433;Initial Catalog=XXXXX;Persist Security Info=False;User ID=XXXXXXXXX;Password=XXXXXXXXXXXMultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
},
"ApplicationInsights": {
"InstrumentationKey": "XXXXXXXXX7a515"
},
"RedisCache": {
"ConnectionString": "XXXXXXXXXXX.redis.cache.windows.net:6380,password=XXXXXXXXX=,ssl=True,abortConnect=False"
},
"sendGrid": {
"ApiKey": "XXXXXXXXX",
"FromEmail": "ABC@EFG.com",
"FromEmailName": "Emailt"
},
"Twilio": {
"AccountSID": "XXXXXXX",
"AuthToken": "XXXX",
"FromNumber": "+11234567890"
},
"Jwt": {
"key": "MyApplicationKey",
"Issuer": "MyAppName",
"Audience": "MyAppAudience"
},
"Serilog": {
"Properties": {
"ApplicationName": "BlazorWasm",
"Serilog": "AppInsightFromSerilog"
},
"MinimumLevel": { //https://docs.datalust.co/v2/docs/logging-levels (Verbose,Debug,Information,Warning,Error,Fatal)
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Using": [ "XXXXXXX.Server", "Serilog.Sinks.ApplicationInsights" ],
"Enrich": [
"FromLogContext",
"WithUserName",
"WithIPAddress"
],
"Filter": [
{
"Name": "ByExcluding",
"Args": {
"expression": "RequestPath like '%swagger%' or RequestPath like '%_framework%' or Contains(@m, 'Hosting environment:') or Contains(@m, 'Now listening on:') or Contains(@m, 'HTTP') or Contains(@m, 'Application started. Press Ctrl+C to shut down.') or Contains(@m, 'Content root path:')"
//https://github.com/serilog/serilog-expressions
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/log-.txt",
"rollingInterval": "Day"
}
},
{
"Name": "ApplicationInsights",
"Args": {
"restrictedToMinimumLevel": "Information",
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
}
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=tcp:XXXXXXXX.database.windows.net,1433;Initial Catalog=XXXXXXX;Persist Security Info=False;User ID=XXXXXXAppUser;Password=XXXXXXXXXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
"sinkOptionsSection": {
"tableName": "SeriLog",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"schemaName": "EventLogging",
"autoCreateSqlTable": true
},
"columnOptionsSection": {
//https://github.com/serilog/serilog-sinks-mssqlserver#custom-property-columns
"additionalColumns": [
{
"ColumnName": "InstanceId",
"PropertyName": "InstanceId",
"DataType": "varchar",
"DataLength": 80
},
{
"ColumnName": "ConnectionId",
"PropertyName": "ConnectionId",
"DataType": "varchar",
"DataLength": 80
},
{
"ColumnName": "RequestId",
"PropertyName": "RequestId",
"DataType": "varchar",
"DataLength": 80
},
{
"ColumnName": "ActionId",
"PropertyName": "ActionId",
"DataType": "varchar",
"DataLength": 80
},
{
"ColumnName": "OperationId",
"PropertyName": "OperationId",
"DataType": "varchar",
"DataLength": 80
},
{
"ColumnName": "ActionName",
"PropertyName": "ActionName",
"DataType": "varchar",
"DataLength": 5000
},
{
"ColumnName": "EnvironmentName",
"PropertyName": "EnvironmentName",
"DataType": "varchar",
"DataLength": 50
},
{
"ColumnName": "ApplicationName",
"PropertyName": "ApplicationName",
"DataType": "varchar",
"DataLength": 5000
},
{
"ColumnName": "UserName",
"PropertyName": "UserName",
"DataType": "varchar",
"DataLength": 1000
},
{
"ColumnName": "IPAddress",
"PropertyName": "IPAddress",
"DataType": "varchar",
"DataLength": 50
},
{
"ColumnName": "Source",
"PropertyName": "Source",
"DataType": "varchar",
"DataLength": 50
},
{
"ColumnName": "SourceContext",
"PropertyName": "SourceContext",
"DataType": "varchar",
"DataLength": 1000
},
{
"ColumnName": "Origin",
"PropertyName": "Origin",
"DataType": "varchar",
"DataLength": 100
},
{
"ColumnName": "OperationType",
"PropertyName": "OperationType",
"DataType": "varchar",
"DataLength": 1000
},
{
"ColumnName": "RequestPath",
"PropertyName": "RequestPath",
"DataType": "varchar",
"DataLength": 1000
},
{
"ColumnName": "MethodName",
"PropertyName": "MethodName",
"DataType": "varchar",
"DataLength": 1000
}
],
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "MessageTemplate", "Properties" ],
"logEvent": {
"excludeAdditionalProperties": true,
"excludeStandardColumns": true
}
},
"restrictedToMinimumLevel": "Information" // (Verbose,Debug,Information,Warning,Error,Fatal)
}
}
]
},
"AllowedHosts": "*"
}