Utilisation du log4net dans une application windows

Signaler
Messages postés
33
Date d'inscription
vendredi 26 mars 2010
Statut
Membre
Dernière intervention
26 juillet 2010
-
Messages postés
33
Date d'inscription
vendredi 26 mars 2010
Statut
Membre
Dernière intervention
26 juillet 2010
-
salut,
je veux utiliser le log4net pr avoir des traces, je développe une application windows en c#, et ma question c'est comment peut on utiliser le log4net avec un fichier de configuration séparé, parce que d'après ce que j'ai lu , les applications windows lisent par défaut les app.conf.
en gros je veux utiliser le log4net sans toucher le fichier app.conf.
ça me semble possible mais je c pas cmt faire?

merci.

si on ne fait ce qu'on aime, il faut qu'on aime ce qu'on fait!

5 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
60
Salut,

Le plus simple est de rajouter une ligne de ce type dans ton fichier Properties\AssemblyInfo.cs :


[assembly: log4net.Config.XmlConfigurator(ConfigFile="TonNomDeFichier.config", Watch=true)]


Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
33
Date d'inscription
vendredi 26 mars 2010
Statut
Membre
Dernière intervention
26 juillet 2010

déjà je te remercie bcp, parce que Log4net trouve le fichier de conf mnt ce qu'il me le mentionnait avt comme erreur.
sinon dons mon fichier de conf j'ai choisis tracer mes erreur et info dans une console, et puisque je développe une application windows j'ai pas de Main du coup j'appelle la console dans mon constructeur
public partial class Maclasse : Window
    {
       // use Log4net
        protected static readonly ILog _log =       LogManager.GetLogger(typeof(Maclasse));
public Maclasse()
        {
                      
                XmlConfigurator.Configure();
               InitializeComponent();
               Console.Read();
          }
private void btCancel_Click(object sender, RoutedEventArgs e)
       {

               _log.Debug("This is a DEBUG Text");
       }

}

mais malheureusement la console ne se lance pas
aurait tu une idée?


si on ne fait ce qu'on aime, il faut qu'on aime ce qu'on fait!
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
11
puisque je développe une application windows j'ai pas de Main

Toutes les applications ont un Main. Dans une application Windows forms il se situe (par défaut) dans la classe Program.

mais malheureusement la console ne se lance pas

C'est tout à fait normal. Cependant tu peux voir dans le fenêtre output de VS ce que tu affiches dans la console. Autrement tu peux toujours modifier la sortie de la console Console.SetOut(la ou tu veux);

Pour un tuto assez complet sur log4net
http://lutecefalco.developpez.com/tutoriels/dotnet/log4net/introduction/

---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
Messages postés
33
Date d'inscription
vendredi 26 mars 2010
Statut
Membre
Dernière intervention
26 juillet 2010

j'ai essayer avec un fichier de conf qui fait les trace dans un fichier.txt
 <!-- Cette section contient les informations nécessaires à la configuration de log4net -->
  <log4net>
    <!-- Définie une sortie (où les textes de débogage peuvent aller) -->
    
      
      
      <layout type="log4net.Layout.PatternLayout, log4net">
         - %m%n" />
      </layout>
    
 
    <!-- Définie la catégorie racine, son niveau de priorité par défaut et ajoute le(s) sortie(s) (où les textes de débogage vont aller) -->
    <root>
      
      
    </root>
 
    <!-- Spécifie le niveau de certain namespaces -->
    <!-- Le niveau peut être : ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
    <logger name="ExempleLog4Net">
      <level value="all" />
    </logger>
  </log4net>
</configuration>
 


et dans ma classe C #
using log4net;
using log4net.Config;
public partial class Maclasse : Window
    {
       // use Log4net
        protected static readonly ILog _log = LogManager.GetLogger(typeof(Maclasse));
private void btCancel_Click(object sender, RoutedEventArgs e)
       {

               _log.Debug("This is a DEBUG Text");
       }
}

mais le problème ca me fait rien ça me crée même pas le fichier log.txt
si on ne fait ce qu'on aime, il faut qu'on aime ce qu'on fait!
Messages postés
33
Date d'inscription
vendredi 26 mars 2010
Statut
Membre
Dernière intervention
26 juillet 2010

merci bcp pr tous.
j'ai résolu mon problème mais avec un fichier en sortie et pas une console:
je vais faire un résumé de ttes les étapes que j'ai suivis pour ts ceux qui cherchent leurs solutions sur les forum comme moi:
tt d'abord il faut savoir que quant il s'agit d'une application windows, L'API System.Configuration est disponible seulement si le paramétrage se trouve dans le fichier de configuration de l'application (app.config ou web.config).
alors si vous voulez éviter d' intégrer votre config du LOG4NET dans le fichier app.config, vous devez tt simplement
[LIST]
[*]créer un nouveau fichier fich.config ou vs pouvez mettre votre config log4net,
[*]dans Properties/AssemblyInfo.cs mettez cette assembly: [assembly: log4net.Config.XmlConfigurator(ConfigFile = "T2log.config", Watch = true)]
[*]dans votre classe n'oubliez pas : using log4net; using log4net.Config;
[*]Et surtout vérifier si votre fichier de conf que vous venez de créer est bien mis dans le bin et pr que cela se fait automatiquement a chaque compilation, allez y dans les propriétés de votre fichier de conf et mettez copier dans le répertoire : toujours copier
/LIST

et voila normalement ts devra marcher.

quelques questions pr ceux qui maitrise la configuration du LOG4NET:
* [B]y'a t-il moyen de configurer les couleurs d'affichage, autrement dis pour chaque niveau(INfo,DEBUG,...) affecter une couleur, je sais que c'est faisable avec les consoles, j'ai essayé cette config(celle des console) mais ça pas fonctionner pr le fichier?
* comment peut on faire, pr avoir à chaque fois que les traces de la dérniére exécution ( en créant à chaque fois un nouveau fichier ou / et écraser l'ancien )/B

merci encore pr ts le monde :ccool:

si on ne fait pas ce qu'on aime, il faut qu'on aime ce qu'on fait!