2010-06-09 18 views
16

estoy usando un RollingFileAppender que entrar algo de información a un archivo con un conversionPattern (en el web.config) que tiene este aspecto de la cabecera de cada sección de registro:¿Puede Log4net tener múltiples apéndices para escribir en el mismo archivo?

<conversionPattern value="%date - %property{userId} - %property{method}%newline--------------------------------%newline%message%newline%newline"/> 

me gustaría que entrar detalles debajo de este encabezado como puntos de viñeta. Actualmente estoy tratando de utilizar otro RollingFileAppender que registra al mismo archivo con un simple conversionPattern de tan sólo un guión, como esto:

<conversionPattern value="- %message%newline"/> 

Pero estos mensajes no llegan a ingresar el archivo de registro. Estoy usando Log.Info() para el encabezado y Log.Debug() para los puntos de viñetas y el filtrado de cada apéndice en sus respectivos niveles de registro. ¿Es lo que estoy tratando de hacer posible? ¿O hay una mejor manera de obtener información de encabezado y detalle en un archivo de registro de log4net?

Respuesta

32

Sí, puede tener dos apuntes de log4net que se agregan (escriben) al mismo archivo de registro.

Es necesario colocar la siguiente línea en cada uno de sus appenders:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 

Esto hará que log4net utilizar un modelo de bloqueo mínima que permite que varios procesos para escribir en el mismo archivo.

Aquí es un XML de ejemplo que utiliza dos appenders al grabar 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 sólo la búsqueda en esta página para ' mismo archivo '.

Espero que esto ayude.

+0

Tenga en cuenta que solo las versiones recientes de log4net tienen esta configuración lockModel Xml y clase MinimalLock. Si usa una versión anterior, no se lanzará ningún error, pero no funcionará. –

1

Puede darse cuenta si hay algún problema con log4net verificando la ventana de salida en visual studio. La biblioteca registra errores allí, muy útil para detectar errores de configuración.

+0

Desafortunadamente no hay ningún error al informar que podría ayudarme :( – adam0101

+0

ejecutó el código para configurar log4net, ¿verdad? –

Cuestiones relacionadas