Pregunta

estoy poniendo en práctica una solución de registro con Log4net para un servicio de Windows NT. Puedo accionar un interruptor en un archivo de configuración para iniciar el registro de información para el sistema de archivos. Hasta ahora he sido capaz de lograr esto por tener un appender archivo de rodadura y teniendo log4net "reloj" del archivo de configuración.

Lo que he aviso es que Log4net creará archivos de registro vacías, tan pronto como se inicia el servicio, incluso si todo el registro está desactivado y no tiene la intención de iniciar la sesión.

No se puede encontrar mucha información sobre este tema que no sea este post:

Cómo deshabilitar la creación de archivo de registro vacío en el arranque de aplicaciones?

Mi preocupación es que alguien podría configurar el servicio con un conjunto muy bajo nivel de permisos que ni siquiera tendrían acceso para crear los archivos de registro en el sistema de archivos. No quiero incurrir en la penalización de rendimiento de tener excepciones lanzadas cada vez que me golpeó una declaración de registro, incluso si yo no tenía la intención de iniciar la sesión.

Me he envuelto cada declaración de registro con la comprobación para ver si el nivel de registro está habilitado antes de intentar conectarse, pero todavía no estoy seguro de si en el funcionamiento interno de log4net si o no excepciones van a ser lanzado aún si el archivo configurado en el appender no fue creado.

if (logger.IsDebugEnabled)
{
    logger.DebugFormat(format, traceMessage);    
}

¿Alguien sabe qué va a hacer log4net si no puede crear los archivos de registro inicialmente?

Aquí es un poco de información acerca de la configuración de mi. Tala bien cuando se enciende funciona, estoy preocupada por los problemas de permisos.

Atributo en mi clase de registro para ver los cambios de configuración:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Logging.config", Watch = true)]

Appender de:

  <appender name="Test" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value=".\\AppLogs\\_test.%appdomain.log" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ALL" />
      <levelMax value="FATAL" />
      <acceptOnMatch value="false"/>
    </filter>
    <filter type="log4net.Filter.LoggerMatchFilter">
      <loggerToMatch value="Test" />
    </filter>
    <appendToFile value="true" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="6MB" />
    <rollingStyle value="Size" />
    <staticLogFileName value="true" />
    <filter type="log4net.Filter.DenyAllFilter" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level - %message%newline" />
    </layout>
  </appender>
¿Fue útil?

Solución

"Mi preocupación es que alguien podría configurar el servicio con un conjunto muy bajo nivel de permisos que ni siquiera tendrían acceso para crear los archivos de registro en el sistema de archivos." - el servicio de puesta en marcha detecta el conjunto mínimo de permisions requeridas está presente y lanzan una excepción (o de otra manera manejan) si no lo son.

No creo que esto es un problema de la tala per se; es más una cuestión de permisos si o no su servicio tiene su requeridas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top