8
votes

Quelle est la meilleure façon de créer un journal pour chaque instance d'une classe dans log4net?

Nous avons quelques objets de longue durée de vie chacune de la même classe du système. Il n'y a que 5 ou 6 et ils sont des connexions à des systèmes extérieurs. Je veux que chacun de ces instances ait son propre dossier qu'ils peuvent se connecter.

Quelle est la meilleure façon de faire cela? Je ne peux voir que d'ajouter des enregistreurs de manière programmative comme la réponse en ce moment.

mise à jour: Je souhaite éviter d'utiliser le fichier de configuration car si j'ajoute une nouvelle connexion à un autre hôte distant différent, je souhaite que sa sortie de journal accéder au fichier nommé après la connexion sans avoir à d'abord pirater un fichier de configuration. Ce serait bien s'il était fait automatiquement. Je ne sais pas peut-être que cela peut être atteint dans un fichier de configuration une fois de côté et que vous n'avez pas besoin de le modifier à chaque fois.


0 commentaires

3 Réponses :


1
votes

Je peux réellement voir quelques possibilités:

  1. Attribuez chaque journalisation à une catégorie différente pour chaque connexion et appendez des journaux pour chaque catégorie à différents fichiers.
  2. Créez de nouveaux enregistreurs programmatiquement comme vous l'avez suggéré.
  3. Utilisez une injection de dépendance pour injecter autant d'enregistreur séparé que nécessaire.

2 commentaires

J'utilise déjà une injection de dépendance. Je préférerais ne pas avoir à utiliser le fichier de configuration car alors je dois modifier notre fichier de configuration chaque fois que je souhaite ajouter une nouvelle connexion. Je préférerais que cela se produise automatiquement.


Alors AOP viendrait à votre aide via la génération de fichier de configuration simplifiée Pour une simple utilisation d'attributs, mais votre temps de configuration initial sera un peu compliqué (mais sera très facile à utiliser).



0
votes

J'ai un article qui pourrait aider:

http://horth.com/blog/?p=165

Il s'agit de changer de logfile au moment de l'exécution. Ce que vous pourriez faire est de passer dans le nom du fichier pour chaque instance dans votre fichier log4net. De cette façon, vous pouvez créer un fichier journal pour chaque instance de votre classe.

Quant à votre édition sur le point de ne pas vouloir utiliser un fichier de configuration, cette méthode provoque ce problème afin que vous puissiez utiliser un fichier de configuration mais que vous avez toujours la flexibilité que vous souhaitez.


2 commentaires

Je pense que cela fonctionne si le processus veut se connecter à un fichier différent. Tous les journaux que je veux créer tous appartiennent au même processus.


@uridium - L'exemple concerne un fichier par processus. Cependant, vous pouvez modifier cela à un fichier par exemple (de la classe). Il suffit de changer cette ligne pour prendre votre nom d'instance ou une autre propriété personnalisée que vous avez transmise: logfile = processus.getcurrentCrocess (). ProcessName + ". LOG"; Tout ce que vous passez dans cette variable logfile sera le Nom de votre fichier pour vous connecter. Cela signifie que vous pouvez créer un fichier journal différent chaque fois que vous initialisez une classe, ce que vous voulez faire.



1
votes

La meilleure réponse est la journalisation programmatique, j'ai traversé le même problème et l'a trouvé comme la seule solution.

Pour plus d'aide, vérifiez cette question (mine) Stackoverflow question posté par moi < / p>

Et je pense que votre problème et mon problème sont les mêmes, des enregistreurs dynamiques, créez des enregistreurs, disposent d'enregistreurs et de toutes ces choses à l'exécution :)

Si vous avez plus de questions, demandez-vous, sera heureux d'aider depuis que j'ai suivi tout ce que :)


1 commentaires

J'étais à peu près venu à la même conclusion.