How to write log4net config into appsettings.json?

后端 未结 2 1106
醉梦人生
醉梦人生 2021-02-05 22:41

I have implemented log4net into .NET core 2.0, to log into a text file. As log4net have a config file, which is having XML configuration i

2条回答
  •  面向向阳花
    2021-02-05 23:06

    If you using Microsoft.Extensions.Logging.Log4Net.AspNetCore nuget package, there is a way keep log4net config in appsettings.json (but honestly not very usable).

    You can write into appsettings.json (or appsettings.Environment.json for different environments) rules overriding nodes from log4net config file.

    Documentation

    Example of setting the logging level from appsettings.json.

    appsettings.json:

    {
      "Log4NetCore": {
        "PropertyOverrides": [
          {
            "XPath": "/log4net/root/level",
            "Attributes": {
              //"value": "ALL"
              //"value": "DEBUG"
              //"value": "INFO"
              "value": "WARN"
              //"value": "ERROR"
              //"value": "FATAL"
              //"value": "OFF"
            }
          }
        ]
      }
    }
    

    You still needs log4net config file with nodes which you want override from appsettings.json:

    
    
      
        
          
        
      
      
        
         
        
        
        
            
        
      
      
        
        
        
      
    
    

    Registration in Startup.cs:

    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
    
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
    
        public IConfiguration Configuration { get; }
    
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }
    
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            // Add these lines
            var loggingOptions = this.Configuration.GetSection("Log4NetCore")
                                                   .Get();
            loggerFactory.AddLog4Net(loggingOptions);
    
            app.UseMvc();
        }
    }
    

提交回复
热议问题