2010-05-17 7 views
13

Voici mes informations web.config:très simple journalisation de fichiers appender ne fonctionne pas

<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> 
... 

Voici le code qui initialise l'enregistreur:

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

Il ne fonctionne pas, peu importe ce que je parais faire. Je référence correctement le 'log4net.dll', et en déboguant l'application, je peux voir que l'objet de journal est initié correctement. Ceci est un projet web de framework asp.net 3.5. Des idées/suggestions?

Je pensais que cette erreur était peut-être due à une contrainte d'autorisation d'écriture de fichier, mais cela ne semble pas être le cas (ou du moins je pense).

+0

BTW, « Contact » est le nom de la classe que cette fonction SendMessage() est. – contactmatt

Répondre

11

J'ai trouvé la réponse: je avais besoin requirePermission = « false » tag dans la section de configuration de mon web.config.

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

Vous êtes mon nouveau meilleur ami. –

5

Pour autant que je peux voir vous manque un appender pour la racine:

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

qui ne le font pas . Une chose intéressante est lors de l'exécution du site Web, il crée le fichier. Txt, mais il n'enregistre pas quelque chose dedans. Lorsque j'essaie de supprimer le fichier (alors que le processus du serveur Web est toujours en cours d'exécution), il indique que le serveur Web l'utilise ... même après avoir quitté la page qui utilise la capacité de journalisation (une seule page utilise la journalisation) . – contactmatt

+0

@contactmatt: Je suis désolé, je ne peux pas vous aider beaucoup plus. J'ai copié votre configuration dans l'un de mes programmes (et ajouté l'appende-ref) et cela a fonctionné comme prévu. Assurez-vous d'avoir la dernière version de log4net et que le fichier de configuration est à jour (commencez une reconstruction, regardez dans le fichier). – tanascius

+0

Juste ce que je cherchais, merci l'homme! –

0

Est-il possible d'exécuter Debug View sur le serveur web?

Si oui, vous pourrez peut-être voir si log4net signale des erreurs (par exemple une erreur d'accès ou d'une erreur de lecture du fichier de configuration)

0

je devais appeler fileAppender.ActivateOptions() pour obtenir la connexion