Bonjour,

Je sollicite votre aide, car j'ai un soucis avec Log4net que je n'arrive pas à résoudre.

Je développe une solution contenant plusieurs projets et implémentant log4net. Depuis le projet principal, les logs fonctionnent bien pour chacun des projets de la solution. Log4net est configuré dans le fichier "App.config" du projet principal, et chacun des projets de la solution a son propre appender...

J'ai cependant besoin de pouvoir accéder aux logs sur un projet qui peut s'exécuter de façon indépendante. J'ai donc configuré le fichier "app.config" du projet de la façon suivante :

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
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
  
  <log4net>
    <appender name="EditeurExerciceLogAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log/log-editeur-exercice-file.txt" />
      <threshold value="ERROR"/>
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="EditeurExerciceLogAppender" />
    </root>
    <logger name="PTRS.EditeurExercice" >
      <level value="DEBUG" />
      <appender-ref ref="EditeurExerciceLogAppender" />
    </logger>
  </log4net>

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Log\log4net_InternalDebug.txt"/>
      </listeners>
    </trace>
  </system.diagnostics>

  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>
J'ai mis en place le log "interne" de Log4net pour essayer de comprendre d'ou pouvaient venir mes soucis.

Dans le fichier principal du projet, j'implémente Log4net normalement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
private static readonly ILog log = LogManager.GetLogger(typeof(UCEditeurExercice));

log.Debug("initData() - Debut");

log4net.Config.XmlConfigurator.Configure();
string debugFlag = System.Configuration.ConfigurationSettings.AppSettings["log4net.Internal.Debug"];...

log.Debug("initData() - Fin");
J'ai rajouté la récupération de debugFlag pour m'assurer que je rentrais bien dans le ficheir "app.config".

Après exécution, je récupère bien 2 fichiers dans mon répertoire de logs :
- log4net_InternalDebug.txt
- log-editeur-exercice-file.txt

Mais le fichier "log-editeur-exercice-file.txt" est toujours vide...

Voici le contenu du fichier "log4net_InternalDebug.txt"

log4net: log4net assembly [log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821]. Loaded from [C:\projet\PTRS\EditeurExercice\bin\Debug\log4net.dll]. (.NET Runtime [2.0.50727.4961] on Microsoft Windows NT 6.1.7600.0)
log4net: DefaultRepositorySelector: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating repository for assembly [EditeurExercice, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]
log4net: DefaultRepositorySelector: Assembly [EditeurExercice, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\projet\PTRS\EditeurExercice\bin\Debug\EditeurExercice.exe]
log4net: DefaultRepositorySelector: Assembly [EditeurExercice, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified.
log4net: DefaultRepositorySelector: Assembly [EditeurExercice, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy]
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using file [C:\projet\PTRS\EditeurExercice\bin\Debug\EditeurExercice.vshost.exe.Config] watching for file updates
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using file [C:\projet\PTRS\EditeurExercice\bin\Debug\EditeurExercice.vshost.exe.Config]
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using stream
log4net: XmlConfigurator: loading XML configuration
log4net: XmlConfigurator: Configuring Repository [log4net-default-repository]
log4net: XmlHierarchyConfigurator: Configuration update mode [Merge].
log4net: XmlHierarchyConfigurator: Logger [root] Level string is [DEBUG].
log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="DEBUG",value=30000].
log4net: XmlHierarchyConfigurator: Loading Appender [EditeurExerciceLogAppender] type: [log4net.Appender.RollingFileAppender]
log4net: XmlHierarchyConfigurator: Setting Property [File] to String value [log/log-editeur-exercice-file.txt]
log4net: XmlHierarchyConfigurator: Setting Property [Threshold] to Level value [ERROR]
log4net: XmlHierarchyConfigurator: Setting Property [AppendToFile] to Boolean value [True]
log4net: XmlHierarchyConfigurator: Setting Property [RollingStyle] to RollingMode value [Size]
log4net: XmlHierarchyConfigurator: Setting Property [MaxSizeRollBackups] to Int32 value [10]
log4net: XmlHierarchyConfigurator: Setting Property [MaximumFileSize] to String value [100KB]
log4net: XmlHierarchyConfigurator: Setting Property [StaticLogFileName] to Boolean value [True]
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: XmlHierarchyConfigurator: Setting Property [ConversionPattern] to String value [%date %-5level %logger - %message%newline]
log4net: PatternParser: Converter [date] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [level] Option [] Format [min=5,max=2147483647,leftAlign=True]
log4net: PatternParser: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [literal] Option [ - ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: XmlHierarchyConfigurator: Setting Property [Layout] to object [log4net.Layout.PatternLayout]
log4net: RollingFileAppender: Searched for existing files in [C:\projet\PTRS\EditeurExercice\bin\Debug\log]
log4net: RollingFileAppender: curSizeRollBackups starts at [0]
log4net: FileAppender: Opening file for writing [C:\projet\PTRS\EditeurExercice\bin\Debug\log\log-editeur-exercice-file.txt] append [True]
log4net: XmlHierarchyConfigurator: Created Appender [EditeurExerciceLogAppender]
log4net: XmlHierarchyConfigurator: Adding appender named [EditeurExerciceLogAppender] to logger [root].
log4net: XmlHierarchyConfigurator: Retrieving an instance of log4net.Repository.Logger for logger [PTRS.EditeurExercice].
log4net: XmlHierarchyConfigurator: Setting [PTRS.EditeurExercice] additivity to [True].
log4net: XmlHierarchyConfigurator: Logger [PTRS.EditeurExercice] Level string is [DEBUG].
log4net: XmlHierarchyConfigurator: Logger [PTRS.EditeurExercice] level set to [name="DEBUG",value=30000].
log4net: XmlHierarchyConfigurator: Adding appender named [EditeurExerciceLogAppender] to logger [PTRS.EditeurExercice].
log4net: XmlHierarchyConfigurator: Hierarchy Threshold []
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using .config file section
log4net: XmlConfigurator: Application config file is [C:\projet\PTRS\EditeurExercice\bin\Debug\EditeurExercice.vshost.exe.Config]
log4net: XmlConfigurator: Configuring Repository [log4net-default-repository]
log4net: XmlHierarchyConfigurator: Configuration update mode [Merge].
log4net: XmlHierarchyConfigurator: Logger [root] Level string is [DEBUG].
log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="DEBUG",value=30000].
log4net: XmlHierarchyConfigurator: Loading Appender [EditeurExerciceLogAppender] type: [log4net.Appender.RollingFileAppender]
log4net: XmlHierarchyConfigurator: Setting Property [File] to String value [log/log-editeur-exercice-file.txt]
log4net: XmlHierarchyConfigurator: Setting Property [Threshold] to Level value [ERROR]
log4net: XmlHierarchyConfigurator: Setting Property [AppendToFile] to Boolean value [True]
log4net: XmlHierarchyConfigurator: Setting Property [RollingStyle] to RollingMode value [Size]
log4net: XmlHierarchyConfigurator: Setting Property [MaxSizeRollBackups] to Int32 value [10]
log4net: XmlHierarchyConfigurator: Setting Property [MaximumFileSize] to String value [100KB]
log4net: XmlHierarchyConfigurator: Setting Property [StaticLogFileName] to Boolean value [True]
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: XmlHierarchyConfigurator: Setting Property [ConversionPattern] to String value [%date %-5level %logger - %message%newline]
log4net: PatternParser: Converter [date] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [level] Option [] Format [min=5,max=2147483647,leftAlign=True]
log4net: PatternParser: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [literal] Option [ - ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: PatternParser: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: XmlHierarchyConfigurator: Setting Property [Layout] to object [log4net.Layout.PatternLayout]
log4net: RollingFileAppender: Searched for existing files in [C:\projet\PTRS\EditeurExercice\bin\Debug\log]
log4net: RollingFileAppender: curSizeRollBackups starts at [0]
log4net: FileAppender: Opening file for writing [C:\projet\PTRS\EditeurExercice\bin\Debug\log\log-editeur-exercice-file.txt] append [True]
log4net: XmlHierarchyConfigurator: Created Appender [EditeurExerciceLogAppender]
log4net: XmlHierarchyConfigurator: Adding appender named [EditeurExerciceLogAppender] to logger [root].
log4net: XmlHierarchyConfigurator: Retrieving an instance of log4net.Repository.Logger for logger [PTRS.EditeurExercice].
log4net: XmlHierarchyConfigurator: Setting [PTRS.EditeurExercice] additivity to [True].
log4net: XmlHierarchyConfigurator: Logger [PTRS.EditeurExercice] Level string is [DEBUG].
log4net: XmlHierarchyConfigurator: Logger [PTRS.EditeurExercice] level set to [name="DEBUG",value=30000].
log4net: XmlHierarchyConfigurator: Adding appender named [EditeurExerciceLogAppender] to logger [PTRS.EditeurExercice].
log4net: XmlHierarchyConfigurator: Hierarchy Threshold []
log4net: Hierarchy: Shutdown called on Hierarchy [log4net-default-repository]
Quelqu'un aurait il une explication sur le fait que mon fichier reste toujours vide?

Merci,