Как реализовать логи в Worker Service. NET Core для Linux - PullRequest
0 голосов
/ 28 мая 2020

Я работаю. NET Новый шаблон проекта Core 3.1 Worker Service для службы Linux. Я хочу реализовать ведение журнала для Linux.

Мне нужно создать файл text и журналы в этом файле. Я пробовал что-то, но это не создает файл для Linux daemon.

Program class код

public static void Main(string[] args)
{
    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
        .Enrich.FromLogContext()
        .WriteTo.File(@"F:\Logs\Worker\logfile.txt").CreateLogger(); //On this location folder and file will be created

    IHost host = CreateHostBuilder(args).Build();

    host.Services.UseScheduler(scheduler =>
    {
        scheduler
          .Schedule<ReprocessInvocable>()
          .EveryThirtySeconds();
    });
    host.Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args).UseSystemd()

.ConfigureServices(services =>
{
    services.AddScheduler();
    services.AddTransient<ReprocessInvocable>();
}).UseSerilog();

ReprocessInvocable.cs код класса, который вызывает Main

public async Task Invoke()
{
    _logger.LogInformation("Information - Worker running at: {time}", DateTimeOffset.Now);
    _logger.LogWarning("Warning - Worker running at: {time}", DateTimeOffset.Now);
    _logger.LogError("Error - Worker running at: {time}", DateTimeOffset.Now);;
    Log.Information("Invoke has called at: {time}", DateTimeOffset.Now);
    //return Task.CompletedTask;
}

Как заставить его работать для Linux исполняемого файла? или существующий код должен работать нормально?

Изменить 1:

1) Что вы используете для запуска своего демона? супервайзер? systemd?

Я использовал Systemd для установки демона.

2) Есть ли у вас ожидания того, что вы хотите от «входа в систему Linux»?

Я хочу чтобы сгенерировать текстовый файл при запуске демона (это довольно просто в windows :)) и зарегистрировать / записать текст, например Method1, вызываемый в {time} и Method2, вызываемый в {time} et c .. Просто для отслеживания поток обслуживания.

3) Вы хотите, чтобы файл журнала на диске?

Для Linux, я хочу войти в Linux хранилище машины.

4 ) Или лог, который идет в системные журналы?

Если это дает мне файл с исключенным журналом, тогда все будет в порядке.

...