Question

Je développe une solution SharePoint personnalisée composée d'une fonctionnalité et d'un travail du minuteur (créé par la fonctionnalité de FeatureActivated). Dans ma solution, je souhaite utiliser log4net pour la journalisation (je connais ULS).

Tout va bien avec log4net dans la fonctionnalité elle-même (je viens de placer log4net.config près de web.config et tout va bien), mais je ne sais absolument pas comment initialiser log4net à partir d'un travail du minuteur (compte tenu du fait qu'il n'est pas exécuté) IIS mais par OSWTIMER).

Quelqu'un peut-il m'aider, s'il vous plaît, à trouver des réponses aux questions suivantes:

  1. Où stocker log4net.config et comment le transmettre au travail?
  2. Dois-je initialiser log4net à chaque appel de la méthode Execute ()?

Merci!

Était-ce utile?

La solution

Cela fait longtemps que je n’ai pas utilisé log4net, mais si je me souviens bien, vous pouvez stocker votre fichier de configuration où vous le souhaitez et laisser log4net le charger à partir de là lors de l’initialisation de l’enregistreur.

1) Un bon emplacement pour stocker le fichier de configuration serait le dossier dans les 12 ruches. Peut-être le dossier de votre fonctionnalité. Comme le chemin d'accès à ce fichier ne changera pas, il devrait être facile de le référencer avec le consignateur.

2) Je pense que vous devrez initialiser l'enregistreur à chaque fois en tant que SPJobDefinition (classe de travail du minuteur) est stocké dans la base de données lorsqu'elle ne s'exécute pas. La fonctionnalité permettant de stocker le travail du minuteur dans la base de données provient de la classe de base de SPJobDefinition SPPersistedObject . Les variables membres d'une classe héritée de SPPersistedObject, qui doivent être stockées avec la classe dans la base de données, doivent être marquées avec un attribut [Persisted] . Mais pour autant que je sache, les objets persistants ne peuvent être que des types de données élémentaires (int, long, string, ...).

Donc, stocker un objet log4net Logger dans la base de données ne fonctionnera pas ou du moins n’est pas pris en charge. Ainsi, chaque fois que votre travail est chargé à partir de la base de données, l’objet Logger doit être réinitialisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top