Saltar al contenido

¿Cómo escribir la configuración de log4net en appsettings.json?

Este equipo especializado pasados ciertos días de investigación y de recopilar de información, han obtenido los datos necesarios, deseamos que te sea de utilidad en tu proyecto.

Solución:

Tal vez no sea la forma correcta pero, de todos modos logré usar mi log4net.config en appSettings.json. Estoy poniendo mi respuesta aquí para que pueda ayudar a alguien si no quiere usar un archivo de configuración adicional para su proyecto.

Así que lo que he hecho es convertir mi XML dentro JSON y usó el JSON como un string en mi appSettings.json después de eso, uso el siguiente código para leer el string.

appSettings.json


  "ConnectionStrings": 
    "LoggerConfig": "Config string"
  

json a XML conversión usando Newtonsoft.Json

 string xmlElement = _configuration["ConnectionStrings:LoggerConfig"];
 XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(xmlElement);
 XmlConfigurator.Configure(logRepository, GenerateStreamFromString(doc.InnerXml));

Este código se utiliza para convertir el JSON dentro XML pero no proporcionará el contenido XML como Elemento entonces, lo usé como una corriente. Para convertir el string en una secuencia usé el siguiente código.

        public static Stream GenerateStreamFromString(string s)
        
            var stream = new MemoryStream();
            var writer = new StreamWriter(stream);
            writer.Write(s);
            writer.Flush();
            stream.Position = 0;
            return stream;
        

y funciona bien

Aquí solía convertir primero mi XML to JSON y otra vez JSON to XML para usarlo como un log4net configpero si alguien quiere, use XML directamente como stringpor lo que reducirá algo de código.

Si usa el paquete nuget Microsoft.Extensions.Logging.Log4Net.AspNetCore, hay una manera de mantener la configuración de log4net en appsettings.json (pero, sinceramente, no es muy útil).

Puede escribir en appsettings.json (o appsettings.Environment.json para diferentes entornos) las reglas que anulan los nodos del archivo de configuración log4net.

Documentación

Ejemplo de configuración del nivel de registro desde appsettings.json.

configuración de aplicaciones.json:


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

Todavía necesita el archivo de configuración de log4net con los nodos que desea anular de appsettings.json:



  
    
      
    
  
  
    
     
    
    
    
        
    
  
  
    
    
    
  

Registro en 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();
    

Te mostramos reseñas y calificaciones

Si eres capaz, eres capaz de dejar un artículo acerca de qué te ha parecido esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *