2010-05-17 12 views
13

Aquí está mi información web.config:Muy simple registro appender archivo no trabaja

<configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
     </configSections> 
     <log4net> 
     <root> 
       <level value="ALL" /> 
     </root> 
     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
       <file value="c:\temp\log-file.txt" /> 
       <appendToFile value="true" /> 
       <rollingStyle value="Size" /> 
       <maxSizeRollBackups value="10" /> 
       <maximumFileSize value="1MB" /> 
       <staticLogFileName value="true" /> 
       <layout type="log4net.Layout.SimpleLayout" /> 
     </appender> 
     </log4net> 
... 

Aquí está el código que inicializa el registrador:

protected void SendMessage() 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
     ILog log = LogManager.GetLogger(typeof(Contact)); 
     ... 
     log.Info("here we go!"); 
     log.Debug("debug afasf"); 
     ... 
    } 

no funciona, no importa lo que parece que hacer. Me refiero al 'log4net.dll' correctamente y al depurar la aplicación puedo ver que el objeto de registro se inicia correctamente. Este es un proyecto web de framework asp.net 3.5. ¿Alguna idea/sugerencia?

Pensé que originalmente este error puede deberse a una restricción de permiso de escritura de archivo, pero ese no parece ser el caso (o eso creo).

+0

Por cierto, "Contacto" es el nombre de la clase que esta función sendmessage() está en. – contactmatt

Respuesta

11

encontré la respuesta: necesitaba el requirePermission = "false" etiqueta en la sección de configuración de mi web.config.

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" **requirePermission="false"**/> 
</configSections> 
+4

Eres mi nuevo mejor amigo. –

5

Por lo que yo puedo ver que se echa en falta un appender para root:

<root> 
    <level value="ALL" /> 
    <appender-ref ref="RollingFileAppender" /> 
</root> 
+1

que no lo hizo . Una cosa interesante es cuando se ejecuta el sitio web, crea el archivo .txt, pero no registra nada en él. Cuando trato de eliminar el archivo (mientras el proceso del servidor web aún se está ejecutando) dice que el servidor web lo está usando actualmente ... incluso después de haber abandonado la página que usa la capacidad de registro (solo una página usa el registro) . – contactmatt

+0

@contactmatt: Lo siento, no puedo ayudarte mucho más. Copié tu configuración a uno de mis programas (y agregué el appende-ref) y funcionó como se esperaba. Asegúrese de tener la última versión de log4net y de que el archivo de configuración esté actualizado (comience una reconstrucción, examine el archivo). – tanascius

+0

¡Justo lo que estaba buscando, gracias hombre! –

0

¿Es posible ejecutar Debug View en el servidor web?

Si es así, usted puede ser capaz de ver si log4net está reportando cualquier error (como por ejemplo un error de acceso o un error al leer el archivo de configuración)

0

tuve que llamar fileAppender.ActivateOptions() para obtener el registro que