2009-02-16 17 views
6

Estamos tratando de usar Log4Net para iniciar sesión desde nuestra aplicación WCF implementada en IIS 6. Estamos intentando iniciar sesión en un archivo, pero parece que no podemos crear los archivos de registro, y mucho menos ver el resultado del registro en ellos. Las piezas pertinentes de web.config a cabo son:No se puede hacer que Log4Net funcione en nuestra aplicación WCF

<sectionGroup name="common"> 
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
</sectionGroup> 
... 
<common> 
    <logging> 
     <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging"> 
      <arg key="level" value="INFO" /> 
      <arg key="showLogName" value="true" /> 
      <arg key="showDataTime" value="true" /> 
      <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" /> 
     </factoryAdapter> 
    </logging> 
</common> 

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="c:\logs\ApplicationInfoTest.log" /> 
     <threshold value="INFO" /> 
     <param name="AppendToFile" value="true" /> 
     <param name="DatePattern" value="ddMMyyyy" /> 
     <param name="MaxSizeRollBackups" value="10" /> 
     <param name="MaximumFileSize" value="10MB" /> 
     <param name="RollingStyle" value="Size" /> 
     <param name="StaticLogFileName" value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="Header" value="\r\n\r\n---------------------------------------------\r\n" /> 
      <param name="Footer" value="\r\n---------------------------------------------\r\n\r\n" /> 
      <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 

Con esta configuración podemos ver INFO El registro del nivel que sale de nuestra aplicación cuando se utiliza DebugView, pero es evidente que se trata de la pieza y no el
pieza.

¿Hay algo que no hemos podido configurar en web.config? ¿Es un problema de permisos con el directorio que hemos creado para que se escriban los registros?

Por favor, señale nuestro error obvio.

+1

@GeorgeStocker ¿Cómo es este el duplicado, ya que fue de 2 años antes de la ¿otro? –

Respuesta

5

Uso ProcessMonitor from SysInternals para averiguar dónde los permisos se negaron

(Potencialmente se puede determinar la misma información adjuntando un depurador y la captura de excepciones, no en Sólo mi código)

¿Estás seguro de que el proceso bajo el cual el servicio se está ejecutando tiene permisos en la carpeta en la que está intentando escribir?

+0

Hola Rubén. Gracias por el aporte. La carpeta (por ahora, hasta que lo hagamos funcionar) tiene permisos de "Control total" para todos, usuarios ANONYMOUS LOGIN y administradores. –

+0

Procmon es el hombre si hay alguna confusión, eso le mostrará qué director no logra hacer lo que quiere y dónde. Agregar usuarios de administrador no ayudará. Normalmente, los grupos de aplicaciones predeterminadas se ejecutan como servicio de red. Pero es mucho mejor aprender a pescar en este caso. –

+0

Según su descripción del problema, definitivamente ha conectado la inicialización cuando el registro normal está ocurriendo: debe mantener dos appenders configurados para asegurarse de que todavía falle uno. –

8

También he tenido que agregar esta línea al archivo AssemblyInfo.cs de mi aplicación para que log4net funcione.

// LOG 4 net config 
[assembly:log4net.Config.XmlConfigurator(Watch=true)] 
+0

Seguramente el registro normal no funcionaría entonces, ¿ha demostrado que la configuración no es el problema? –

+0

Tenga en cuenta que debe especificar esta línea en el proyecto/dll donde está utilizando log4net la primera vez. Por lo tanto, generalmente no corro riesgos y simplemente lo agrego en todos mis assembInfoInfo.cs. – Ruben

+0

qué proyecto específicamente tiene que agregar esta línea ya que tengo mi implementación de servicio en un proyecto diferente, el servidor WCF en un proyecto diferente y un proyecto separado en el que sí Manejo el error. – chugh97

0

¿Tiene una sección de configuración configurada para log4net? No vi eso en el fragmento de código

0

Primero ejecutaba el servicio WCF como una aplicación de consola: de esta manera puede especificar la cuenta de usuario para la aplicación para ejecutar y ver si el problema es con su configuración o con un problema de permisos que ejecuta el servicio a través de IIS.

Si no está seguro de cómo ejecutar el servicio como una aplicación de consola echar un vistazo a http://www.jacopretorius.net/2009/08/running-windows-service-inside-console.html

2

XmlConfigurator.Configure Try()

Cuestiones relacionadas