【问题标题】:Why asp.net core logging everything?为什么 asp.net core 记录一切?
【发布时间】:2019-10-30 21:15:07
【问题描述】:

我已经创建了我的第一个 asp.net core 3.0 应用程序。以及带有 serilog 文件扩展名的 setup.cs 文件,如下所示:

   public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            loggerFactory.AddFile("logs/ts-{Date}.txt");
            ....

而 appsettings.json 是:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

但这会在应用程序运行时记录很多信息。但我只想将我的日志调用保存在控制器操作或其他任何地方:

 public class WeatherForecastController : ControllerBase
 {
    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
       _logger.LogInformation("oops");
       ....
    }
 }

【问题讨论】:

    标签: c# asp.net-core logging serilog


    【解决方案1】:

    .NET Core 3 项目的默认模板还有一个 appsettings.Development.json 文件,它会覆盖基本 appsettings.json 文件中的设置。它看起来像这样:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Debug",
          "System": "Information",
          "Microsoft": "Information"
        }
      }
    }
    

    请注意,日志级别设置为Debug,这就是您的日志包含如此多条目的原因。

    来自docs

    AddJsonFile 在您使用CreateDefaultBuilder 初始化新的主机构建器时会自动调用两次。调用该方法从以下位置加载配置:

    • appsettings.json - 首先读取此文件。文件的环境版本可以覆盖 appsettings.json 文件提供的值。
    • appsettings.{Environment}.json – 根据 IHostingEnvironment.EnvironmentName 加载文件的环境版本。

    【讨论】:

      【解决方案2】:

      正如@DavidG 已经回答的那样,日志记录级别指定记录的日志。

      查看以下链接以获取有关日志记录的更多信息: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0#configure-logging-1

      https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0#log-level-1

      以下是仅记录 _logger.LogInformation("oops"); 的示例

      {
        "Logging": {
          "LogLevel": {
            "Default": "Information",
            "Microsoft": "None",
            "System": "None"
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-30
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 1970-01-01
        • 2015-07-09
        相关资源
        最近更新 更多