Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Nouveau Membre du Club
    Inscrit en
    novembre 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 137
    Points : 31
    Points
    31

    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

  2. #2
    Nouveau Membre du Club
    Inscrit en
    novembre 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 137
    Points : 31
    Points
    31

    Par défaut

    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.

  3. #3
    Nouveau Membre du Club
    Inscrit en
    novembre 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 137
    Points : 31
    Points
    31

    Par défaut

    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?

  4. #4
    Nouveau Membre du Club
    Inscrit en
    novembre 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 137
    Points : 31
    Points
    31

    Par défaut

    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.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •