Serilog не записывает в файл, если раздел конфигурации WriteTo недействителенC#

Место общения программистов C#
Ответить
Anonymous
 Serilog не записывает в файл, если раздел конфигурации WriteTo недействителен

Сообщение Anonymous »

Я пишу веб-сервис, использующий Serilog. У меня были проблемы с записью файлов (но ведение журнала консоли работало). Я заметил, что настройка изменилась, когда вышел .net core 2.0, основываясь на пояснениях на этой и этой страницах.

Однако теперь я не вижу никаких журналов (возможно, раньше я видел регистраторы M$ по умолчанию).

Вот как настраивается program.cs:

Код: Выделить всё

public class Program
{
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.AddUserSecrets()
.Build();

public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration.GetSection("Serilog"))
.CreateLogger();

try
{
Log.Information("Starting webhost...");
BuildWebHost(args).Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseConfiguration(Configuration)
.UseSerilog()
.Build();
}
Мой файл appsettings.json имеет этот раздел в корне:

Код: Выделить всё

"Serilog": {
"Using" : ["Serilog.Sinks.Console", "Serilog.Sinks.File"],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
},
"Enrich" :  ["FromLogContext"],
"WriteTo":  [
{"Name": "Console" },
{"Name": "Debug" },
{"Name": "File", "Args":  {"path": "%LogDir%\\sampleapp\\log-{Date}.txt", "rollingInterval":  "Day", "shared": true }  }
]
},
"Properties": {
"Application": "sampleapp"
}
},
Обратите внимание, что %LogDir% — это переменная среды на моем компьютере, которая прекрасно разрешается в других приложениях. Путь уже создан, и папка Logs имеет полные разрешения на чтение учетных данных, которые использует это приложение.

Я вызываю ведение журнала следующим образом...

Код: Выделить всё

    private readonly ILogger
 _logger;
private readonly IPartnerDao _partnerDao;

public PartnerController(ILogger logger, IPartnerDao partnerDao)
{
_logger = logger;
_partnerDao = partnerDao;
}

[HttpGet]
[Route("{titleCode}")]
public async Task Get(string titleCode)
{
_logger.LogInformation("Test logging");
}
Тем не менее, почему-то в окне веб-сервера ASP.NET Core ничего не отображается, и на моем компьютере не создается файл при запуске службы.

Я упускаю что-то очевидное?>

Подробнее здесь: https://stackoverflow.com/questions/547 ... is-invalid
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»