es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo escribir la configuración de NLog en app.config de manera programática con C#

Necesito verificar si existe la sección NLog en mi app.config y agregarla si no existe.

La app.config debería contener una configuración simple de NLog como esta:

<configsections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"></section>
</configsections>

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoreload="true" throwexceptions="true" internalloglevel="Debug" internallogfile="d:\tmp\nlog-internal.log">
    <variable name="myvar" value="myvalue"></variable>
    <variable name="globalLevel" value="debug"></variable>

    <targets async="true">
        <target name="logfile" xsi:type="File" filename="${basedir}/logs/${shortdate} mylogfile ${environment:COMPUTERNAME}.log"></target>
    </targets>

    <rules>
        <logger name="*" minlevel="${globalLevel}" writeto="logfile" layout="${longdate} ${level} ${message}"></logger>
    </rules>
</nlog>

No puedo encontrar un método en la API de NLog que escriba en el archivo de configuración. Puedo cargar la configuración de varias formas, por ejemplo:

var config = new NLog.Config.XmlLoggingConfiguration("NLogTest.exe.config");

Luego puedo agregar/modificar la configuración agregando objetivos (targets), reglas, etc., pero ¿cómo lo escribo en mi archivo de configuración?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para verificar si existe la sección NLog en app.config y agregarla si no existe, puedes utilizar la clase ConfigurationManager del espacio de nombres System.Configuration. Primero, puedes verificar si la sección existe utilizando el método GetSection. Si devuelve nulo, puedes agregar la sección utilizando la clase ConfigSection y guardar los cambios en el archivo app.config utilizando la clase ConfigurationManager como se muestra a continuación:

    using System.Configuration;
    using NLog.Config;
    
    // Verificar si existe la sección NLog en app.config y agregarla si no existe
    var nlogSection = ConfigurationManager.GetSection("nlog");
    if (nlogSection == null)
    {
        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var nlogConfigSection = new ConfigSection("nlog", typeof(ConfigSectionHandler));
        config.Sections.Add("nlog", nlogConfigSection);
        config.Save(ConfigurationSaveMode.Modified);
    }
    

    Este código primero verifica si la sección “nlog” existe utilizando el método GetSection. Si devuelve nulo, abre el archivo app.config utilizando el método OpenExeConfiguration y crea un nuevo objeto ConfigSection para la sección “nlog” utilizando la clase ConfigSection. Luego, agrega la nueva sección al archivo de configuración utilizando la propiedad Sections y guarda los cambios en el archivo utilizando el método Save con la bandera ConfigurationSaveMode.Modified. Esto agregará la configuración NLog requerida al archivo app.config.

Comments are closed.