UseSerilog程序.cs的dotnet运行被困在大楼里



当我在program.cs中使用Serilog时。并使用f5用iis-express启动新实例。它运行良好,并登录到数据库,但当我在cmd中运行dotnet时,消息将永远停留在"中;建筑物"什么都不发生,没有错误或什么都没有。

我使用WriteTo:MSSqlServer。如果我更改为WriteTo控制台,它将开始与dotnet运行一起工作。

我的代码:

程序.cs:

public class Program
{

public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile(Path.Combine(env.ContentRootPath, "connectionStrings.json"),
optional: true,
reloadOnChange: true);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseSerilog((hostingContext, services, loggerConfiguration) =>
{
loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext()
.Filter.ByExcluding(Matching.FromSource("Microsoft"))
.Filter.ByExcluding(Matching.FromSource("System"));
});
}
appsettings.json:
"Serilog": {
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "RSAnsokanData",
"tableName": "Log",
"autoCreateSqlTable": true
}
}
]
}

我使用.net 5.0

带有

<PackageReference Include="Serilog" Version="2.10.0" />
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.MSSqlServer" Version="5.6.0" />

我的情况与Sk Shahnawaz ul的回答非常相似。我使用appsettings.ENVIRONMENT.json文件设置记录器,如下所示:

var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";
Console.WriteLine($"Starting project on {environmentName}!");
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{environmentName}.json")
.Build();
var config = new LoggerConfiguration()
.ReadFrom.Configuration(configuration);
Log.Logger = config.CreateLogger();

默认情况下,Serilog在JSON中查找"Serilog"密钥。问题是,我开始在另一台具有不同环境名称的机器上进行该项目,但appsettings.newmachine.json文件没有密钥。我从另一台机器的应用程序设置中复制了它,现在一切都正常了。

我遇到了同样的问题。对我来说,根本原因是我没有传递用于设置Serilog的最小日志配置的环境变量。

我编辑了launchSettings.json文件,对于具有以下设置的配置文件:"commandName": "Project",包含了环境变量,并且工作正常。

最新更新