41 votes

Écriture des journaux dans un fichier

J'ai quelques problèmes lors de l'écriture des journaux de log4net dans le fichier. J'ai l'impression de faire tout comme décrit dans le manuel, mais cela ne fonctionne pas. Voici mon fichier logging.config :

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log.txt" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>

S'il vous plaît aider avec un exemple de fichier de configuration qui fonctionne réellement.

46voto

jlew Points 5666

Vous ne semblez pas avoir d' <root> qui référence votre appender :

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

    <log4net>
      <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="log.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="250KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
      </appender>
      <root>
        <level value="INFO" />
        <appender-ref ref="RollingFileAppender" />
      </root>
    </log4net>
</configuration>

21voto

Shyju Points 46555

Avez-vous appelé la méthode configure lorsque l'application démarre pour la première fois ?

 log4net.Config.XmlConfigurator.Configure();

Si oui. Tu devrais être bon. Vérifiez les autorisations de fichier sur le disque que vous écrivez.

Si vous le souhaitez, vous pouvez également activer le débogage interne de log4net pour déterminer ce qui ne va pas.

http://logging.apache.org/log4net/release/faq.html#troubleshooting

6voto

Kevin Green Points 1047

Il y a deux choses que vous pouvez faire :

Premièrement, si vous souhaitez utiliser un fichier de configuration séparé, en ajoutant ce qui suit à votre fichier app.config, il configurera la journalisation automatiquement.

 <?xml version="1.0"?>
<configuration>
    <appSettings>
        <add key="log4net.Config" value="log4.config"/>
        <add key="log4net.Config.Watch" value="True"/>
        <add key="log4net.Internal.Debug" value="False"/>
    </appSettings>
</configuration>

Sinon, vous devez lancer la connexion au démarrage de votre application.

 //Initiate logging based on web.config file
log4net.Config.XmlConfigurator.Configure();

// Create a logger for use in this class
log4net.ILog log4 = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

3voto

JAnton Points 165

Fantastique. Les réponses sont correctes... sauf qu'elles ne fonctionnaient pas pour moi

J'ai cherché sur le net et j'ai finalement découvert qu'il me manquait la ligne suivante dans Assembly.cs :

 [assembly: log4net.Config.XmlConfigurator]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X