首页 > 解决方案 > .net 核心控制台应用程序 - serilog 写入 bin/debug 文件夹

问题描述

我正在使用 .net5 控制台应用程序并将 serilog 设置为记录到 Logs/log.txt,但不是写入 rootFolder/Logs/log.txt,而是写入到 bin/debug 文件夹。

编辑:我附上代码:

在 appsettings.json 中它看起来像这样:

   {
      "Name": "File",
       "Args": {
        "path": "Logs\log.txt",
      }
   }

程序.cs

static void Main(string[] args)
        {
            var configuration = new ConfigurationBuilder()
                .AddJsonFile("appSettings.json", true, true)
                .Build();
 
            var serviceCollection = new ServiceCollection()
                .AddLogging(builder => builder.AddSerilog(
                    new LoggerConfiguration()
                        .ReadFrom.Configuration(configuration)
                        .CreateLogger()))
                .BuildServiceProvider();

            var logger = serviceCollection.GetService<ILogger<Program>>();


            logger.LogInformation("hello from Serilog");
            Console.ReadLine(); 
        }

有什么想法吗?

标签: c#.netconsole-applicationserilog

解决方案


在 program.cs 文件中试试这个

Log.Logger = new LoggerConfiguration()
                        .Enrich.FromLogContext()
                        .Enrich.WithProperty("Application", "MyApp")
                        .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
                        .MinimumLevel.Override("System", LogEventLevel.Warning)
                    .WriteTo.File("Logs/log.log", 
                    outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
                    rollingInterval: RollingInterval.Hour)
                    .CreateLogger();

和 appsettings 文件

 "Logging": {
"LogLevel": {
  "Default": "Information",
  "Microsoft": "Warning",
  "Microsoft.Hosting.Lifetime": "Information"
}

},


推荐阅读