asp.net - studio - ¿Log4net puede tener varios agregadores que escriban en el mismo archivo?
log4net rollingstyle (2)
Estoy usando un RollingFileAppender para registrar cierta información en un archivo con un conversionPattern (en el web.config) que se ve así para el encabezado de cada sección de registro:
<conversionPattern value="%date - %property{userId} - %property{method}%newline--------------------------------%newline%message%newline%newline"/>
Me gustaría registrar detalles debajo de este encabezado como puntos de bala. Actualmente estoy intentando usar otro RollingFileAppender que se registra en el mismo archivo con un simple Patrón de conversión de solo un guión, como este:
<conversionPattern value="- %message%newline"/>
Pero estos mensajes no están llegando al archivo de registro. Estoy usando Log.Info () para el encabezado y Log.Debug () para los puntos y filtrando a cada appender en sus respectivos niveles de registro. ¿Es lo que estoy tratando de hacer posible? ¿O hay una mejor manera de obtener información de encabezados y detalles en un archivo de registro desde log4net?
Podría darse cuenta si hay algún problema con log4net al comprobar la ventana de salida en Visual Studio. La biblioteca registra errores allí, muy útil para detectar errores de configuración.
Sí, puede tener dos agregadores de log4net que se agregan (escriben) al mismo archivo de registro.
Debe colocar la siguiente línea en cada uno de sus Anexos:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
Esto hará que log4net use un modelo de bloqueo mínimo que permita que múltiples procesos escriban en el mismo archivo.
Aquí hay un ejemplo de XML que usa dos agregadores que escriben en el mismo archivo de registro:
<log4net debug="false">
<appender name="RollingLogFileAppender1" type="log4net.Appender.RollingFileAppender">
<!-- this configures a log for the application messages -->
<file value="TestLog.log" />
<appendToFile value="true" />
<!-- next line uses a minimal locking model that allows multiple processes to write to the same file -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<!-- make the most recent log the highest numbered log -->
<countDirection value="1" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] %message%newline [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline" />
</layout>
<!-- The following two filters insure only log requests of
version ''1'' use this Appender -->
</appender>
<appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
<file value="TestLog.log" />
<appendToFile value="true" />
<!-- next line uses a minimal locking model that allows multiple processes to write to the same file -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<!-- make the most recent log the highest numbered log -->
<countDirection value="1" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline%message" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender1" />
<appender-ref ref="RollingLogFileAppender2" />
</root>
Esto se puede encontrar en la documentación de Apache aquí: Apache Log4Net Docs Simplemente busque en esta página el "mismo archivo".
Espero que esto ayude.