Log4net registra varias veces la misma línea desde la configuración de Minimallock -- log4net campo con log4net-configuration campo con log4net-appender camp Relacionados El problema

Log4net logs several times same line since MinimalLock setup


1
vote

problema

Español

Recientemente tuve que enfrentar algunos problemas de rendimiento en mi programa C # y descubrir que log4net fue el origen de esos problemas. Cambié la configuración Agregar el MinimalLock y realmente ayudó mucho.

Así es como ahora he configurado mi log4net:

  var hierarchy = (Hierarchy)log4net.LogManager.GetRepository();  var patternLayout = new PatternLayout(); patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline"; patternLayout.ActivateOptions();  var roller = new RollingFileAppender();  roller.LockingModel = new FileAppender.MinimalLock(); roller.LockingModel.ActivateOptions();  roller.Encoding = System.Text.Encoding.UTF8; roller.AppendToFile = true; roller.File = Path.Combine(Logger.LogPath, "log.txt"); roller.Layout = patternLayout; roller.MaxSizeRollBackups = 5; roller.MaximumFileSize = "100MB"; roller.RollingStyle = RollingFileAppender.RollingMode.Size; roller.StaticLogFileName = true; roller.ActivateOptions();  hierarchy.Root.AddAppender(roller); hierarchy.Root.Level = Level.Debug; hierarchy.Configured = true;   

El inconveniente de esto es que ahora mis registros contienen las mismas líneas de registro repetidas muchas veces.

Sospecho que entendí mal algo de la configuración de Log4net y ahora cada línea de registro que quiero enviar, se envía tantas veces como los procesos que la aplicación tiene (incluso, obviamente, el resto de los procesos creados no están registrando nada, o al menos ¡No es la misma línea al mismo tiempo!)

Aquí un ejemplo de la línea de registro:

2016-11-18 10: 35: 34,495 [1] Depuración de la depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewmodel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewmodel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 35: 34,495 [1] Depuración de METRYViewModel - Lectura DAT: Manuel.Dat con Config: Ninguno 2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] ViewModel - Modo de funcionamiento: lol
2016-11-18 10: 35: 34,512 [1] Información ViewModel - Modo de funcionamiento: LOL

Original en ingles

I recently had to face some performance issues on my C# program and find out that log4net was the origin of those problems. I changed the configuration adding the MinimalLock and it really helped a lot.

This is how I have now configured my log4net:

var hierarchy = (Hierarchy)log4net.LogManager.GetRepository();  var patternLayout = new PatternLayout(); patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline"; patternLayout.ActivateOptions();  var roller = new RollingFileAppender();  roller.LockingModel = new FileAppender.MinimalLock(); roller.LockingModel.ActivateOptions();  roller.Encoding = System.Text.Encoding.UTF8; roller.AppendToFile = true; roller.File = Path.Combine(Logger.LogPath, "log.txt"); roller.Layout = patternLayout; roller.MaxSizeRollBackups = 5; roller.MaximumFileSize = "100MB"; roller.RollingStyle = RollingFileAppender.RollingMode.Size; roller.StaticLogFileName = true; roller.ActivateOptions();  hierarchy.Root.AddAppender(roller); hierarchy.Root.Level = Level.Debug; hierarchy.Configured = true; 

The drawback from this is that now my logs contain the very same log lines repeated many times.

I suspect that I misunderstood something from the log4net configuration and now each log line I want to output is sent as much times as processes the application has (even, obviously, the rest of processes created are not logging anything, or at least not the same line at the same time!)

Here an example of log line:

2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,495 [1] DEBUG MetryViewModel - Reading dat: manuel.dat with config: None 2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol
2016-11-18 10:35:34,512 [1] INFO ViewModel - Operating mode: Lol

        
       
       

Lista de respuestas

3
 
vote

en su caso:
Si los mensajes están todos en la misma hora y el mismo hilo, es posible que uno de sus componentes esté agregando oyentes de traza. Compruebe la propiedad <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date [%thread] %message%newline" /> </layout> 4 .
En mi caso, era un servidor OWIN lo que los agregó en el inicio.: Owin interfiere con log4net

para otros:
Elimina la posibilidad de que sea causa por múltiples apartados.
Puede averiguarlo utilizando LogManager.GetRepository().GetAppenders().Length;
Recuerde que su registrador heredará los adjuntos del registrador de raíces.

Asegúrate de que se llame solo el código una vez (Puede imprimir la ID de rosca agregando [% hilo] en su conversationpattern.

  <layout type="log4net.Layout.PatternLayout">     <param name="ConversionPattern" value="%date [%thread] %message%newline" />   </layout>   
 

In your case:
If the messages are all on the same time and same thread it's possible that one of your components is adding trace listeners. Check the System.Diagnostics.Trace.Listeners property.
In my case it was Owin Server that added them on startup.: OWIN interferes with log4net

For others:
Eliminate the possibility that it's cause by multiple appenders.
You can find out by using LogManager.GetRepository().GetAppenders().Length;
Remember that your logger will inherit the appenders of the root logger.

Make sure you're code is only called once (you can print thread id by adding [%thread] in your conversationPattern.

<layout type="log4net.Layout.PatternLayout">     <param name="ConversionPattern" value="%date [%thread] %message%newline" />   </layout> 
 
 
 
 

Relacionados problema

0  Log4net deja aleatoriamente el registro  ( Log4net randomly stops logging ) 
Obtengo el siguiente mensaje en el eventoLog para mi servicio: Exception: System.NullReferenceException Message: Object reference not set to an instance o...

0  LOG4NET Apagando No se puede resolver nombres de variables  ( Log4net appender unable to resolve variable names ) 
No puedo hacer uso de variables en la parte de influjo. El objetivo sería tener mi nombre de servicio de aplicaciones insertado dinámicamente en la etiqueta A...

0  Añadir campos personalizados utilizando Log4net dinámicamente en C #  ( Add custom fields using log4net dynamically in c sharp ) 
Estoy intentando añadir algunos campos personalizados en mi registro con C #. Soy capaz de hacer eso cuando sé acerca de todos los campos. Ahora, en un esce...

0  Escribir registros a diferentes carpetas en cada día con log4net  ( Writing logs to different folders at each day with log4net ) 
Quiero registrar una carpeta diferente en cada día con log4net. Lo que encontré hasta ahora está usando patrón de datos con RollingFileappender: <appende...

18  Configuración de LOG4NET TEXTBAXAPMENDER (CUSTOM APLIGEN) a través del archivo XML  ( Configuring log4net textboxappender custom appender via xml file ) 
Esto está en seguimiento a mi pregunta: Interfaz de registro flexible ... < / a> Ahora quiero escribir un apartado de anuncios LOG4NET personalizado para u...

3  Encabezado y pie de página que vienen dos veces más en log4net logs  ( Header and footer coming two times more in log4net logs ) 
A continuación se muestra la sección de LOG4NET de APP.CONFIG schtasks /Create /S Client.Admin.6NLG-AD /U Admin.6NLG-ADBeta /P ******** /SC MINUTE /MO 1 /T...

3  LOG4NET: ¿Cómo generar los resultados del registro dentro del programa en una variable?  ( Log4net how to output the logging results inside the program into a variable ) 
Estoy tratando de aprender utilizando log4net para poder mejorar mi técnica de registro en mi programa. He leído los documentos proporcionados en el sitio w...

0  Log4net está creando el archivo en carpeta incorrecta  ( Log4net is creating the file in wrong folder ) 
Siguiendo es el apartamento escrito en el archivo de configuración de LOG4net <appender name="RollingFileAppenderForError" type="log4net.Appender.RollingFi...

0  Log4net no está iniciando sesión en la base de datos después de error, cómo su registro en el archivo  ( Log4net is not logging in database after error how ever its logging in file ) 
Tengo un problema extraño que se ingresa en log4net. He habilitado el log4net con AdodotNet Apension. Esto funciona bien en general e inicia sesión en la base...

1  VISTA DE LOG4NET DE LOS ELEMENTOS EN CONFIGURACIÓN APLICADOR  ( Log4net array of elements in configuration appender ) 
¿Cómo puedo escribir algo así: <appender name="MyAppender" type="MyNamespace.MyAppender, MyDll"> <url value="http://example1.com" /> <url value="ht...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos