#iis #logging #asp.net-core-2.1
#iis #ведение журнала #asp.net-core-2.1
Вопрос:
Я внедряю ILoggerFactory в моем .Net Core API, шаг :
- создание моей папки «журналы»
-
реализация журнала в моей папке «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("rn -- rn Datetime : {0} rn ERROR : id'" id "' not found rn --", DateTime.Now);
Когда я тестирую его на своем локальном компьютере, он работает, но когда я помещаю свой код на свой сервер IIS, он не работает. Он не создает журналы в моей папке logs.
Комментарии:
1. Не могли бы вы, пожалуйста, поделиться тем, как вы определяете метод добавления файла ILoggerFactory? Какой библиотекой вы пользовались? или вы создаете пользовательский ILoggerFactory? Если бы вы могли опубликовать более подробную информацию, нам было бы легче воспроизвести проблему и найти решение.
2. Привет, у меня есть кто-то, кто мне поможет, я опубликую решение для тех, у кого есть проблема.
Ответ №1:
Я решаю проблему.
В 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>();
}