Как я могу реализовать iLoggerFactory на моем сервере IIS? - PullRequest
0 голосов
/ 03 апреля 2019

Я внедряю iLoggerFactory в моем .Net Core API, шаг:

  • создание моей папки 'logs'
  • реализация журнала в моей папке 'logs'(в startup.ts )

    public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
    {
        // log implementation
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
        loggerFactory.AddEventSourceLogger();
        loggerFactory.AddFile("logs/app-{Date}.txt");
    
        app.UseStaticFiles();
        app.UseCors("AnyOrigin");
        app.UseSwagger();
    
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebToolAPI");
            c.RoutePrefix = string.Empty;
        });
        app.UseMvc();
    }
    
  • И я создаю некоторый контроллер входа в систему, который выглядит так:

    _log.LogError("\r\n -- \r\n Datetime : {0} \r\n ERROR : id'" + id + "' not found \r\n --", DateTime.Now);
    

Когда я тестирую его на своей локальной машине, он работает, но когда я помещаю свой код на свой IIS-сервер, он не работает.Он не создает журналы в моей папке журналов.

1 Ответ

0 голосов
/ 05 апреля 2019

Я решаю проблему.

В Startup.cs :

public class Startup
{
    string LogFilePath;
    public Startup(IHostingEnvironment env)
    {
        // location of the logs
        var exePath = Assembly.GetEntryAssembly().Location.ToString();
        var directoryPath = Path.GetDirectoryName(exePath);
        LogFilePath = Path.Combine(directoryPath + "\\logs\\"); // you can replace "logs" by an other folder name
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
    {
        loggerFactory.AddDebug();
        loggerFactory.AddFile(LogFilePath + "api-{Date}.txt",LogLevel.Debug,null,false,null,30); // you can replace "api" by an other file name for your log
    }
}

В Program.cs :

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseKestrel()
        .UseIISIntegration()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseStartup<Startup>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...