要解决这个问题,你可以使用Serilog库来同时将日志消息发送到AppInsights和文件中。以下是一个示例代码来实现这个解决方案:
首先,使用NuGet包管理器安装Serilog和Serilog.Sinks.ApplicationInsights。
然后,将以下代码添加到你的.NET Core Web应用程序的Startup.cs文件中的ConfigureServices方法中:
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
using Serilog.Extensions.Logging;
public void ConfigureServices(IServiceCollection services)
{
// Add Application Insights
services.AddApplicationInsightsTelemetry();
// Configure Serilog
var instrumentationKey = Configuration["ApplicationInsights:InstrumentationKey"];
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
telemetryConfiguration.InstrumentationKey = instrumentationKey;
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Warning)
.WriteTo.ApplicationInsights(telemetryConfiguration, TelemetryConverter.Traces)
.WriteTo.File("logs.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
// Replace the default ILoggerFactory with Serilog
services.AddSingleton(new SerilogLoggerFactory(Log.Logger, true));
}
其中,instrumentationKey是你的AppInsights仪表板中的Instrumentation Key。
最后,在Configure方法中添加以下代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// ...
// Add Serilog as the logging middleware
loggerFactory.AddSerilog();
// ...
}
现在,你的应用程序将同时将日志消息发送到AppInsights和文件中。你可以根据需要修改Serilog的配置,例如调整日志级别、日志文件的名称和位置等。