用WriteTo.文件不能在.net core 3.1控制台应用程序中工作 &g



我在。net core 3.1中有一个控制台应用程序,并配置了serilog用于记录文件。用WriteTo。控制台工作,但写入到。文件不工作(没有任何错误)。

我安装了这个版本的Serilog (NuGet):

Serilog: 2.11.0

Serilog.Extensions。主持:4.2.0

Serilog.Settings。配置:3.3.0

Serilog.Sinks。异步:1.5.0

Serilog.Sinks。控制台:4.0.1

Serilog.Sinks。文件:4.1.0

下面的代码是Serilog配置:

Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Build())
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Error)
.MinimumLevel.Override("System", LogEventLevel.Error)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
Log.Logger.Information("Application Starting");
下面是控制台应用程序的Main方法:
static void Main(string[] args)
{
var host = AppStartup();
Log.Warning("test log");
Console.ReadKey();
}
static void BuildConfig(IConfigurationBuilder builder)
{
builder.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
}
static IHost AppStartup()
{
var builder = new ConfigurationBuilder();
BuildConfig(builder);
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Build())
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Error)
.MinimumLevel.Override("System", LogEventLevel.Error)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
Log.Logger.Information("Application Starting");
var host = Host.CreateDefaultBuilder() // Initialising the Host 
.ConfigureServices((context, services) => { // Adding the DI container for configuration
})
.UseSerilog() // Add Serilog
.Build(); // Build the Host
return host;
}
}

和appsetting。json数据:

{
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimalLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Information",
"System": "Warning"
}
}
},
"ConnectionStrings": {
"DefaultConnection": "DataSource=app.db;Cache=Shared"
}
}

解决!只需使用显式的完整路径!@ david谢谢你的帮助。

Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Build())
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Error)
.MinimumLevel.Override("System", LogEventLevel.Error)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("C:\Logs\log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();

最新更新