Je comprends pourquoi log4net utilise des app.config
fichiers pour configurer la journalisation - vous pouvez donc facilement modifier la façon dont les informations sont journalisées sans avoir à recompiler votre code. Mais dans mon cas, je ne veux pas emballer un app.config
fichier avec mon exécutable. Et je n'ai aucun désir de modifier ma configuration de journalisation.
Existe-t-il un moyen pour moi de configurer le code de connexion plutôt que d'utiliser le app.config
?
Voici mon fichier de configuration simple:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\EventLog.txt" />
<appendToFile value="false" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="1GB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
</appender>
<root>
<level value="Info" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="MemoryAppender" />
</root>
</log4net>
</configuration>
ÉDITER:
Pour être tout à fait clair: mon objectif est de ne pas avoir de fichier XML. Pas même en tant que ressource embarquée que je transforme en flux. Mon objectif était de définir l'enregistreur complètement par programmation. Je suis juste curieux de savoir si c'est possible et si oui où je pourrais trouver un exemple de syntaxe.
BasicConfigurator.Configure(hierarchy);
au lieu de simplement réglerhierarchy.Configured = true;
.log4net.Util.LogLog.InternalDebugging = true;
avant tout autre appel log4net, puis exécutez sous le débogueur et inspectez la sortie. log4net vous dira où les choses vont mal.Vous pouvez également échapper complètement à XML, j'ai écrit un exemple avec une configuration programmatique minimale ici .
En un mot, voici ce dont vous avez besoin
la source
Oui, vous pouvez configurer log4net en appelant:
Consultez la documentation de log4net .
la source
Vous pouvez également créer un attribut personnalisé qui hérite de log4net.Config.ConfiguratorAttribute et coder en dur que vous configurez ici:
Ajoutez ensuite ce qui suit à un fichier .cs:
la source
Pour ceux qui ne veulent pas ajouter un appender à l'enregistreur racine, mais à l'enregistreur actuel / autre:
la source
La réponse acceptée fonctionne après avoir trouvé deux mises en garde:
roller.File
propriété, cela a commencé à fonctionner.nuget_log4net.fsx:
la source