Как сохранить файл журнала в. net основной рабочей службе? - PullRequest
1 голос
/ 27 января 2020

В настоящее время я работаю над основным рабочим сервисом. Net и хочу сохранить ошибки своего проекта в файле (текстовом файле). Я не смог найти никаких настроек для этого

  .ConfigureLogging((hostingContext, logging) =>
                  {
                      logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                      logging.AddEventLog(new EventLogSettings()
                      {
                          SourceName = "CallerTestCacheServiceCoreAPI",
                          LogName = "CallerTestCacheServiceCoreAPILog",

                      });
                  })

Ответы [ 4 ]

1 голос
/ 28 января 2020

Вы можете использовать NLog . Пожалуйста, проверьте ссылки ниже:

NLog для ASP. NET Core 2

Nlog для ASP. NET Core 3

0 голосов
/ 28 января 2020

в методе Main (программный класс):

 var configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();
        Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(configuration)
            .CreateLogger();

В метод IHostBuilder добавьте UseSerilog():

Host.CreateDefaultBuilder(args)
            .UseSerilog()

В контроллере используйте DI, чтобы получить экземпляр в регистраторе добавьте следующее:

public class MyController: Controller
{
    private ILogger _logger;
    public MyController(ILogger<MyController> logger)
    {
        _logger = logger;
    } }

Для регистрации сообщений используйте экземпляр _logger, например: _logger.LogInformation("User {user} logged in", user_record);

Надеюсь, это поможет.

0 голосов
/ 28 января 2020

Я добавил метод расширения в другой класс, такой как этот проект https://github.com/MV10/Serilog.Dependency.Injection

    public static IServiceCollection AddSerilogServices(this IServiceCollection services)
        {
            return services.AddSerilogServices(
                new LoggerConfiguration()
                    .MinimumLevel.Verbose()
                     .WriteTo.File("log.txt")
                     //.WriteTo.File(new CompactJsonFormatter(), "log.txt")
                    .WriteTo.Console());
        }

и ввел его в сервисы program.cs

 services.AddSerilogServices();

и в моем рабочем классе:

    readonly Serilog.ILogger _log;

        public Worker(  Serilog.ILogger log)
        {

            _log = log;
            log.Information("Hello World!");

        }

и это сработало

0 голосов
/ 27 января 2020

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

Serilog один, если очень хороший пример, проверьте readme на ниже

https://github.com/serilog/serilog-sinks-file

...