2012-03-28 10 views
8

Estoy usando log4net 1.2.11. Entonces, el registro funciona en la máquina del desarrollador, pero cuando lo publico en un servidor de prueba no funciona. Depurando de forma remota, vi que el registro se carga correctamente en la variable ILog, pero cuando llama a log.Error(), no ocurre nada, no hay ningún archivo de registro ni ninguna excepción de log4net.Log4net inicie sesión en la máquina del desarrollador, pero en el servidor de prueba no se registra

¿Alguna idea?

Obs: estoy usando el log4net en un sitio web asp.net mvc 3.

- EDITAR

puse de control total a todos ... cambio de nada, ningún archivo de registro.

+0

ApplicationPoolIdentity es la identidad predeterminada para IIS 7.5 –

Respuesta

8

Habilite la depuración de log4net para obtener más información sobre el problema. Sin esto, log4net falla silenciosamente y es muy difícil solucionar problemas de configuración.

Comprobar How do I enable log4net internal debugging? de las preguntas más frecuentes log4net

Tener en cuenta si tiene problemas de permisos (como Shyju señaló) que la identidad predeterminada para IIS 7.5 es ApplicationPoolIdentity y no Network Service

Here usted tiene instrucciones sobre cómo recursos seguros para ApplicationPoolIdentity .Compruebe la sección "La obtención de recursos"

+0

El 'ApplicationPoolIdentity' no existe. = ( –

+0

@Vinicius Otton: Agregué un enlace para ayudarlo a realizar los permisos para ApplicationPoolIdentity –

+0

Encontré el usuario NetworkService que es posible usuario a la identidad del grupo de IIS. ¿Hay algún problema o algo que deba tener en cuenta después de cambiar la identidad de grupo de IIS a NetworkService? Porque ApplicationIpoolIdentity no existe. –

5

Compruebe que la carpeta tenga suficientes permisos para que ASP.NET escriba un archivo en ella. Lo más probable es que es la razón si funcionaba en la máquina Dev

Algunas soluciones

en su mecanizado Dev borrar el archivo de registro y la carpeta y ejecutarlo como nuevo y ver si se crea un archivo de registro. Si es así, no hay nada que cambiar en el código. Debería ser una cosa de permiso. Así que vamos a comprobar los permisos

Como se mencionó en Claudio Redi en su respuesta, también puede habilitar la depuración interna de log4net para obtener más información. Compruebe la sección llamada "¿Cómo se activa la depuración interna log4net?" para más detalles en este enlace http://logging.apache.org/log4net/release/faq.html

Desde su documentación

¿Por qué no puedo ingresar a un FileAppender partir de una banda ¿solicitud?

La aplicación web se ejecuta como una cuenta de usuario especial en el servidor web llamado ASPNET. Esta cuenta tiene permisos restringidos para proteger el servidor web de los ataques. De forma predeterminada, esta cuenta no puede tener el permiso para escribir en el sistema de archivos. Asegúrese de que la cuenta ASPNET tenga permiso para crear y escribir archivos en el directorio elegido para el registro.

+0

puse de control total a la red de servicio y nada cambio ... ningún archivo de registro. –

+0

@ViniciusOttoni: Como parte de la prueba del permiso, conceda permiso a "Todos" y compruebe si genera algún cambio. entonces usted puede quitar eso y dar permiso específico para el usuario de ASP.NET – Shyju

+0

Puse Control total a TODOS y nada cambia, no hay archivo de registro. = ( –

1

En mi caso, la referencia a log4.config dentro web.config estaba equivocado:

<add key="log4net.Config" value="log4.config"/> 

apunta a la carpeta raíz, y en mi máquina dev, log4.config estaba realmente allí, por lo que el registro lo haría trabajo.

Sin embargo, en una compilación, log4.config se copia en la carpeta bin, el único lugar donde estaría después de una implementación.

Cambio de la web.config a

<add key="log4net.Config" value="bin/log4.config"/> 

trabajo de registro hecha por todos lados para mí

Cuestiones relacionadas