2017-01-23 9 views
1

J'utilise Common.Logging.Log4Net.Universal pour l'écriture de journaux au format xml, de sorte que je puisse le lire en utilisant YALV! Cependant, je ne peux pas voir que les journaux sont générés pour cela. J'ai utilisé cette technique pour la bibliothèque log4net normale et fonctionne sans aucun problème. Voici la configuration pertinente dans mon dossier « web.config »:Problème avec l'utilisation de Common.Logging.Log4Net.Universal pour l'écriture de journaux au format xml pour YALV pour analyser

<configSections> 
    <sectionGroup name="common"> 
     <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
    </sectionGroup> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 
    <common> 
    <logging> 
     <factoryAdapter type="Common.Logging.Log4Net.Universal.Log4NetFactoryAdapter, Common.Logging.Log4Net.Universal" > 
     <arg key="configType" value="FILE"/> 
     <arg key="configFile" value="~/log4net.config" /> 
     </factoryAdapter> 
    </logging> 
    </common> 

Et ici va mon fichier « log4net.config »:

<configuration> 
    <log4net> 
     <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="C://Logs//mylogfile.xml" type="log4net.Util.PatternString"/> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.XmlLayoutSchemaLog4j"> 
      <locationInfo value="true"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <levelMin value="INFO" /> 
      <levelMax value="FATAL" /> 
      </filter> 
     </appender> 
     <root> 
     <level value="ALL"/> 
     <appender-ref ref="FileAppender"/> 
     </root> 
    </log4net> 
</configuration> 

maintenant ci-dessous est le code pour générer réellement les journaux :

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
namespace MyNamespace 
{ 
    public class HomeController : Controller 
    { 
     private static readonly ILog Log = new Log4NetFactoryAdapter().GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

     public ActionResult Index() 
     { 
      Log.Error(m=>m("My First Logs")); 
      return View(); 
     } 
    } 
} 

Lors de l'exécution, le code soit exécuté sans aucune erreur, mais le « mylogfile.xml » mentionnée ci-dessus n'est généré.

S'il vous plaît avis, si quelqu'un a essayé la même chose.

Répondre

2

Quand je regarde la source GitHub du projet d'exploitation forestière Universal Je vois la configuration suivante pour le web.config:

<?xml version="1.0"?> 
<configuration> 
<configSections> 
<sectionGroup name="common"> 
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/> 
</sectionGroup> 
</configSections> 
<common> 
<logging> 
    <factoryAdapter type="Common.Logging.Log4Net.Universal.Log4NetFactoryAdapter, Common.Logging.Log4Net.Universal" /> 
</logging> 
</common> 
</configuration> 

Et vous devez supprimer l'élément racine de configuration de la « log4net.config » fichier:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="C://Logs//mylogfile.xml" type="log4net.Util.PatternString"/> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j"> 
     <locationInfo value="true"/> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="FATAL" /> 
     </filter> 
    </appender> 
    <root> 
    <level value="ALL"/> 
    <appender-ref ref="FileAppender"/> 
    </root> 
</log4net> 

Si cela ne fonctionne pas, activez le débogage pour log4net de voir ce qui se passe mal avec votre configuration.