Bonjour afin de découvrir log4net je me suis créé une petite application qui simule un annuaire téléphonique. Dans celle-ci j'ai configurer log4net comme ci-dessous :

Fichier AssemblyInfo.vb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="app.config", Watch:=True)>
Fichier app.config :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
 
  <!-- Cette section contient les informations nécessaires à la configuration de log4net -->
   <log4net>
    <appender name="fileAppender" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="logs/Log%date{dd-MM-yyyy}.xml" />
      <datePattern value="dd.MM.yyyy'.log'" />
      <appendToFile value="true" />
     <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
        <conversionPattern value="%date{HH:mm:ss} [%thread] %level [%ndc] 
    - %message%newline"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
 
    <!--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>
      <level value="DEBUG" />
      <appender-ref ref="fileAppender" />
    </root>
 
    <!--Spécifie le niveau de certain namespaces 
     Le niveau peut être : ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
    <logger name="logger">
      <level value="DEBUG"/>
      <appender-ref ref="fileAppender"/>
    </logger>
  </log4net>
Et dans une des classes je créé l'objet comme ceci :
Private ReadOnly logger As log4net.ILog = log4net.LogManager.GetLogger( _
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)

Utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Sub FindContact(ByVal searchValue As String)
        Dim val(,) As String = Nothing
 
        Try
            logger.Debug("Entrée de la méthode FindContact")
            logger.Info("Recherche d'un contact.")
            val = _db.Select("Personne", , "NomPrenom LIKE '%" & searchValue & "%'")
 
            If val IsNot Nothing Then
                For i As Integer = 0 To CInt((val.Length / 7) - 1)
                    _contact.Add(New Personne(CLng(val(i, 0)), val(i, 1), val(i, 2), val(i, 3), val(i, 4), val(i, 5), val(i, 6), val(i, 7)))
                Next
            End If
        Catch ex As Exception
            If TypeOf (ex) Is UnexpectedException Then
                logger.Fatal(ex.Message)
            ElseIf TypeOf (ex) Is DbException Then
                logger.Error(ex.Message)
            End If
        Finally
            logger.Debug("Sortie de la méthode FindContact")
        End Try
    End Sub
Mon fichier de log et correctement créer et remplit, je peux même visualiser mes logs avec Yalv !
Cependant, j'ai copié-collé la même configuration qui se trouve dans le AssemblyInfo.vb et app.config
mais mes logs ne se génèrent pas. Là je vous avoue que je sèche. Normalement cette config doit fonctionner
vu qu'elle fonctionne dans mon applic de découverte de log4net.