如何配置ILogger将日志输出到特定文件?

Fer*_*mez 12 logging asp.net-core asp.net-core-2.0

我有一个 ASP.NET Core 2 Web 应用程序正在部署到生产环境,并且需要启用日志来排除错误。我在文档中找不到有关 appsettings.json 记录器部分中的架构的任何位置。这是我那里有的:

"Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information" }
    ,"Console": { "IncludeScopes": "true" }
  }
Run Code Online (Sandbox Code Playgroud)

当我从控制台运行 exe 时,日志信息显示在控制台中,但实体框架也在记录日志,因此我看不到自己的消息,因为显示的输出量有限。因此,我需要将日志输出到一个文件,例如 C:\temp\my.log。如何配置 ASP.NET Core 2 来执行此操作?

提前致谢。

Sha*_*tin 6

因此,我需要将日志输出到一个文件,例如 C:\temp\my.log。如何配置 ASP.NET Core 2 来执行此操作?

Serilog 有一个用于此目的的包

dotnet add package Serilog.Extensions.Logging.File
Run Code Online (Sandbox Code Playgroud)

我们这样配置。

public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging();
}

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) 
{
    loggerFactory.AddFile("C:\\temp\\my.log");
}
Run Code Online (Sandbox Code Playgroud)

另请参阅:https://nblumhardt.com/2016/10/aspnet-core-file-logger/


Rya*_*yan 1

这个问题好像和你的要求一样。

您还可以尝试使用 NLog 将日志输出到文件。它还可以确定其配置文件中日志的布局。

安装后,在startup.cs中,设置日志文件夹:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        GlobalDiagnosticsContext.Set("configDir", "C:\\git\\damienbod\\AspNetCoreNlog\\Logs");
        GlobalDiagnosticsContext.Set("connectionString", Configuration.GetConnectionString("NLogDb"));

        loggerFactory.AddNLog();

        app.UseMvc();
    }
Run Code Online (Sandbox Code Playgroud)

然后在nlog.config中,设置fileName:

 <target xsi:type="File" name="allfile" fileName="${gdc:item=configDir}\nlog-all.log"/>
Run Code Online (Sandbox Code Playgroud)

这是一个你可以参考的例子

  • 谢谢!我最终按照您的建议使用了 NLog。不敢相信有人需要第三方工具来实现这一点,我本以为这是一种非常常见的情况。 (2认同)