Entiendo por qué log4net usa app.config
archivos para configurar el registro, por lo que puede cambiar fácilmente cómo se registra la información sin necesidad de volver a compilar su código. Pero en mi caso no quiero empaquetar un app.config
archivo con mi ejecutable. Y no deseo modificar mi configuración de registro.
¿Hay alguna manera de configurar el código de inicio de sesión en lugar de usar el app.config
?
Aquí está mi archivo de configuración simple:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\EventLog.txt" />
<appendToFile value="false" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="1GB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
</appender>
<root>
<level value="Info" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="MemoryAppender" />
</root>
</log4net>
</configuration>
EDITAR:
Para ser completamente claro: mi objetivo es no tener un archivo XML. Ni siquiera como un recurso incrustado que convierto en una secuencia. Mi objetivo era definir el registrador completamente mediante programación. Solo tengo curiosidad por saber si es posible y si es así, dónde podría encontrar un ejemplo de la sintaxis.
BasicConfigurator.Configure(hierarchy);
lugar de solo configurarhierarchy.Configured = true;
.log4net.Util.LogLog.InternalDebugging = true;
antes de cualquier otra llamada de log4net, luego ejecute bajo depurador e inspeccione la salida. log4net te dirá dónde van las cosas mal.También puede escapar completamente de XML, escribí una muestra con una configuración programática mínima aquí .
En pocas palabras, esto es lo que necesitas
fuente
Sí, puede configurar log4net llamando a:
Consulte la documentación de log4net .
fuente
Alternativamente, podría crear un atributo personalizado que herede de log4net.Config.ConfiguratorAttribute y codifique su configuración allí:
Luego agregue lo siguiente a un archivo .cs:
fuente
Para aquellos que no desean agregar un agregado al registrador raíz, sino al registrador actual / otro:
fuente
La respuesta aceptada funciona después de encontrar dos advertencias:
roller.File
propiedad, comenzó a funcionar.nuget_log4net.fsx:
fuente