J'ai une application de service qui, au démarrage, lit un fichier XML et démarre un thread pour chaque entrée dans le fichier XML. Chaque thread crée une instance d'une classe de worker qui nécessite un logger pour consigner toute sortie dans un fichier journal spécifique au thread.Connexion à un fichier journal individuel pour chaque thread individuel
Dans les services app.config j'ai les paramètres de configuration de log4net configuré pour utiliser un XML appender et le fichier est spécifié comme chaîne_métacaractères comme indiqué ci-dessous:
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
Dans un mode de verrouillage de fil pour chaque instance de la classe de travail créée Je reçois le logger en utilisant la méthode log4net.LogManager.GetLogger("MyLogger")
et ensuite je règle la propriété threads PatternStrings LogName courante en utilisant ThreadContext.Properties["LogName"] = "Log name prefix"
.
Tous les fichiers sont créés mais lorsque l'enregistreur est appelé, il enregistre simplement tous les messages dans un fichier apparemment aléatoire.
J'ai cherché pendant un bon moment à essayer de trouver une solution ou des réponses à ce que je fais mal mais je n'ai pas eu de chance.
Est-ce que quelqu'un a une idée de ce qui se passe?
Un grand merci! J'ai eu le même problème avec le filetage et la connexion dans différents fichiers. J'avais regardé beaucoup de messages et de solutions, mais seulement celui-ci me soutenait. –
Merci beaucoup ... Cette approche a résolu mon problème ... – Emerson