2012-07-09 17 views
6

Un objeto FileTarget en NLog tiene una propiedad (bool) llamada "keepFileOpen". De forma predeterminada, esta propiedad se establece en falso, lo que significa que cada evento de registro abrirá el archivo, escribirá el archivo y cerrará el archivo.Destino del archivo NLog y indicador keepFileOpen

El impacto en el rendimiento es enorme, así que especifiqué "keepFileOpen" en true, en lugar de falso, lo que significa que el archivo se abrirá solo una vez.

¿Alguien tiene una idea (o simplemente sabe) por qué esta propiedad está configurada de manera predeterminada en "falso", lo que provoca un gran rendimiento en el registro?

Hay situaciones en las que establecer esta propiedad como verdadero puede causar problemas (lo que tendría sentido por defecto a "falso").

Gracias!

EDITAR

mediciones de rendimiento para el diseño básico, escritura 100K eventos al registrador:

  • keepFileOpen = false (predeterminado): ~ 101 seg
  • keepFileOpen = true: ~ 1 segundo

Respuesta

0

Intentaré enviarles un correo electrónico y preguntarles al respecto. No puedo encontrar ninguna razón por la cual esta opción sea falsa por defecto.

5

Yo diría que cerrar el archivo es el comportamiento esperado. Si intenta acceder al archivo desde otro proceso o eliminarlo en el sistema de archivos mientras el proceso NLog está activo, provocaría esos molestos errores del sistema que indican que algún proceso contiene el archivo, etc.

Si el tiempo de abrir un archivo es demasiado largo para ti, intenta usar el AsyncWrapper y obtendrás un comportamiento de fuego y olvido.

Por lo tanto, creo que el valor predeterminado es correcto.

Cuestiones relacionadas