2009-08-20 4 views
0

J'ai 2 projets d'applications console dans le même répertoire mais des projets différents. Il y a du code commun dans le répertoire App_Code et un app.config commun qui est généré en fichiers .exe.config séparés.Vb.net Visual Studio 2008 plusieurs modules log4net, même app.config différents enregistreurs, ne fonctionnent pas

Un module (VScanDemonStarter) démarre et écrit dans un enregistreur avec son propre appender dans un fichier séparé. Il utilise un processus.start() pour exécuter l'autre module (VScanDemon) dans une autre fenêtre cachée de l'invite de commande. Lorsque j'exécute VScanDemon par lui-même, il place des entrées dans son fichier journal.

Lorsque je lance VScanDemonStarter, il place des entrées dans son fichier journal (différent), le fichier journal VScanDemon est créé, mais aucune entrée. Je peux voir qu'il s'exécute parce que certains fichiers sont déplacés d'un répertoire à l'autre. Juste aucune entrée de journal.

la configuration ressemble

<root> 
    <level value="INFO" /> 
</root> 
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
    <param name="File" value="log/vscandemonstarter.log" /> 
    <param name="AppendToFile" value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" /> 
    </layout> 
</appender> 
<appender name="vsdemonlogfileappender" type="log4net.Appender.RollingFileAppender" > 
    <param name="File" value="log/vscandemon.log" /> 
    <param name="AppendToFile" value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" /> 
    </layout> 
</appender> 

et les organismes de code mis en place et appeler les corps avec.

VScanDemonStarter:

haut du module:

Private ReadOnly log As ILog = log4net.LogManager.GetLogger("default") 

haut de principal:

log4net.Config.XmlConfigurator.Configure() 

exemple appelle:

If log.IsInfoEnabled Then log.Info("VScanDemonStarter:Main: ----called----") 

VBScanDemon:

haut du module:

Private ReadOnly log As ILog = log4net.LogManager.GetLogger("VSDemonLogger") 

haut de principal:

log4net.Config.XmlConfigurator.Configure() 

VBScanDemon:

If log.IsInfoEnabled Then log.Info("VScanDemon:Main: ----called----") 

je ne reçois pas d'entrées du journal de VScanDemon.


Désolé quitté le haut de la configuration

<log4net debug="true"> 
    <logger name="default"> 
     <level value="INFO"/> 
     <appender-ref ref="LogFileAppender" /> 
    </logger> 
    <logger name="VSDemonLogger"> 
     <level value="INFO"/> 
     <appender-ref ref="vsdemonlogfileappender" /> 
    </logger> 

J'ai une app.config mais deux projets dans le même répertoire qui l'utilisent. Ils génèrent des configs séparées à partir de cette source .exe.config

J'ai regardé la sortie de la console de VScanDemon et il semble qu'elle récupère la configuration sans problème. Mais encore un journal vide. Je ne sais pas si j'ai besoin d'ajouter une couleur ou quelque chose.

Répondre

0

Utilisez-vous la même configuration log4net pour les deux modules? Sinon, sont-ils vraiment différents à l'exécution?

Je pense que "default" devrait retourner le Root-logger et "VSDemonLogger" l'autre mais celui-ci n'est pas inclus dans votre configuration affichée. Si tout le logger de la configuration est "créé", les fichiers journaux générés pour votre VSDemonLogger et VScanDemonStarter sont générés même si vous ne les utilisez pas.

Vous utilisez des chemins relativ dans la configuration, sont-ils toujours valables pour VSDemonLogger si vous l'appelez de VScanDemonStarter?

Questions connexes