L'utilisation de log4net pour Tridion Custom Events ne fonctionne que pour les événements Publish ou Save, pas les deux.


19

Ma question est en quelque sorte liée à this question, mais c'est un problème différent.

J'ai utilisé log4net dans une DLL d'événement; J'ai écrit des événements personnalisés pour publier et enregistrer des événements, mais je ne reçois pas de journaux pour les deux, un seul fonctionne, en fonction de la façon dont j'installe log4net.dll. Dans le serveur de développement, je reçois des journaux pour les événements de publication si j'enregistre log4net en utilisant gacutil, ou des journaux pour les événements d'enregistrement si je glisse et dépose la DLL dans le dossier Windows \ assembly, mais jamais les deux. Dans le serveur de production, je reçois uniquement des journaux pour les événements de publication, peu importe ce que je fais.

Enregistrer les journaux d'événements est beaucoup plus important pour l'utilisateur à stocker, de sorte que la production fonctionne dans le mauvais sens. Le cas idéal serait d'avoir les deux logs, mais n'avoir que des logs de sauvegarde serait correct. Je suppose que cela a quelque chose à voir avec les versions .NET Framework et GAC, mais je ne comprends pas vraiment comment cela fonctionne. Quelqu'un peut-il m'aider ou me diriger dans la bonne direction?

Merci.

  0

Quelle version (ou emplacement) de gacutil utilisez-vous pour enregistrer la DLL? Voir aussi http://stackoverflow.com/questions/6507675/gac-32bit-vs-64bit pour les différents emplacements des assemblys GAC 22 févr.. 132013-02-22 08:30:19

  0

dans DEV version 4.0; dans la version PROD 3.5 22 févr.. 132013-02-22 08:33:33

  0

Je suppose que la vraie question ici est comment savoir ce que GAC est utilisé par les processus Tridion? 22 févr.. 132013-02-22 08:45:44

+1

Je pense que c'est toujours le 4.0, car c'est ce que Tridion est configuré pour utiliser. 3.5 utilisera le dossier c: \ windows \ assembly et 4.0 le c: \ windows \ Microsoft.NET \ assembly \ GAC_MSIL je crois. Mais chaque fois que j'installe un assembly dans le GAC sur un serveur Tridion 2011, j'utilise le dossier c: \ windows \ Microsoft.NET \ assembly \ GAC_MSIL (ou le gacutil 4.0). Une chose à noter est que save utilise COM + et Publish utilise le code .Net 4.0, donc peut-être que vous avez vraiment besoin des deux (si possible du tout). 22 févr.. 132013-02-22 09:20:03

15

Le commentaire de Bart m'a fait penser à deux processus essayant d'utiliser la DLL, et cela m'a fait penser à deux processus essayant d'écrire le même fichier journal. Cela semble donc être le vrai problème, pas les versions GAC mais deux processus essayant d'écrire le même fichier journal; J'ai utilisé deux fichiers journaux différents pour les événements Enregistrer et publier, puis j'ai reçu les deux fichiers journaux.

Je n'ai toujours pas testé dans PROD mais cela fonctionne très bien dans DEV.

Merci!

MISE À JOUR: Comme Nuno a souligné, il y a une configuration log4net qui permet aux deux processus d'utiliser le même fichier journal:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 

je l'ai vu in StackOverflow.

+3

Content que vous l'ayez trouvé. Je suppose qu'il y a un moyen dans log4net de permettre cela (probablement quelque chose autour des "soft locks"), mais si cette solution fonctionne pour vous, alors génial! 22 févr.. 132013-02-22 13:38:09

+1

Cela fonctionne mais [celui-ci] (http://stackoverflow.com/questions/3010407/can-log4net-have-multiple-appenders-write-to-the-same-file) fonctionne beaucoup mieux! Merci Nuno !! 22 févr.. 132013-02-22 14:00:27