Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Web avec .NET > ASP.NET
ASP.NET ASP.NET -Forum d'entraide sur le Développement Web en ASP.NET. Avant de poster -> FAQ ASP.NET, Articles ASP.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 10h30   #1
jmclej
Nouveau Membre du Club
 
Inscription : novembre 2004
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 134
Points : 30
Points : 30
Par défaut config log4net pour un site web?

Bonjour,
Je veux utiliser log4net avec mon site web en asp.net / MVC4 / razor.
Je veux qu'un nouveau fichier se créé dès que nécessaire, un maximum par jour, et avec le nom "SiteWeb_" suivi de la date du jour.
J'ai donc défini ceci dans le web.config:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
<configSections>
    <sectionGroup name="devExpress">
...
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, Log4net" requirePermission="false"/>
  </configSections>
<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="logs\\SiteWeb_%date{yyyyMMdd}.log" />
      <param name="appendToFile" value="true"/>
      <param name="rollingStyle" value="Date" />
      <param name="datePattern" value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="conversionPattern" value="%date - %level - thread(%thread) : %message%newline"/>
      </layout>
    </appender>
  </log4net>
et ceci dans Global.asax.cs :
Code :
1
2
3
4
5
6
 protected void Application_Start()
        {
...
            log4net.Config.XmlConfigurator.Configure();
...
        }
et dans chaque fichier où je veux faire du log, j'ai ceci:
Code :
public static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
et
Or quand j'ai lancé mon serveur le 31/12/2012 il m'a bien créé le fichier SiteWeb_20121231.log par contre quand je suis revenu le 02/01/2013, il m'avait bien PAS créé de fichier le 01/01/2013 mais par contre il a copié le fichier du 31/12/2012 dans SiteWeb_20121231.log20121231 (1er pb...) et a généré les logs du 02/01/2013 dans SiteWeb_20121231.log (2ème pb...). Le contenu de la log en lui-même (au niveau des dates et du formatage) est bon par contre.
Est-ce que vous pouvez voir ce que j'ai mal déclaré car je ne vois plus de mon côté.
D'avance merci,
Julien
jmclej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 17h06   #2
jmclej
Nouveau Membre du Club
 
Inscription : novembre 2004
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 134
Points : 30
Points : 30
Ok,
En fait ce n'est pas le bon paramétrage car j'ai compris que le comportement était bien bon par rapport à ce paramétrage.
Du coup je voudrais savoir comment avoir mon fichier de log qui se termine par .log ou .txt et qui ait un rolling journalier avec la date du jour dans le nom du fichier. Ce qui est pénible c'est que windows ne sait pas avec quel logiciel ouvrir mes fichiers qui ont une fin différente si la fin est la date...
Un petit plus serait aussi d'avoir le nom du fichier du jour avec déjà sa date dans son nom.
Merci pour votre aide.
jmclej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 17h39   #3
jmclej
Nouveau Membre du Club
 
Inscription : novembre 2004
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 134
Points : 30
Points : 30
Je me rapproche de la solution en remplaçant:
Code :
1
2
<file type="log4net.Util.PatternString" value="logs\\SiteWeb_%date{yyyyMMdd}.log" />
<param name="datePattern" value="yyyyMMdd" />
par
Code :
1
2
<file type="log4net.Util.PatternString" value="logs\\SiteWeb.log" />
<param name="datePattern" value="yyyyMMdd'.log'" />
Le même résultat est obtenu en remplaçant par ceci:
Code :
1
2
3
<file type="log4net.Util.PatternString" value="logs\\SiteWeb.log" />
<param name="PreserveLogFileNameExtension" value="true"/>
<param name="datePattern" value="yyyyMMdd" />
Maintenant reste toujours à savoir comment, sans redémarrer le server tous les jours, je peux avoir mon fichier du jour du même format (date du jour et avec une extension) que les fichiers des jours précédents. Vous avez une idée?
jmclej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 18h26   #4
jmclej
Nouveau Membre du Club
 
Inscription : novembre 2004
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 134
Points : 30
Points : 30
J'ai trouvé la totale!
Il faut en fait encore rajouter ceci dans la config:
Code :
<staticLogFileName value="false"/>
On se retrouve bien maintenant avec le fichier du jour SiteWeb20130102.log et les fichiers précédents SiteWeb20130101.log
Visuellement je trouve ça plus clair et windows n'a plus de souci pour ouvrir tous les fichiers.
jmclej est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h22.


 
 
 
 
Partenaires

Hébergement Web