Wie überprüft man, ob LogWriter eingestellt wurde?

8

Ich versuche, eine LogWriter-Exception der Enterprise Library 6 zu behandeln, die nach dem Upgrade von Enterprise Library 4 auf 6 erst kürzlich erschienen ist.

Ich bekomme entweder:

  

Der LogWriter wurde nicht für die statische Klasse Logger festgelegt. Stell es ein   Aufrufen der Logger.SetLogWriter-Methode.

ODER

  

Der LogWriter ist bereits eingestellt.

... je nach Szenario.

Das Problem ist, dass es ein InvalidOperationException wirft, das zu allgemein erscheint und sogar mit

überprüft werden kann %Vor%

... ergibt auch eine Ausnahme, Wie würde man dann prüfen, ob der Schreiber eingestellt ist oder nicht?

    
user919426 31.07.2016, 14:13
quelle

2 Antworten

1

Danke für die Antworten und Kommentare.

Ich habe den Code des Projekts durchgesehen und gesehen, dass darin nichts eingebaut ist, was dies unterstützt.

Obwohl das Projekt nicht mehr in der Entwicklung ist, habe ich die Chance genutzt und eine Feature-Anfrage gestellt.

>

Das beste Szenario, um diese Anforderung zu erfüllen, wäre ein Forking , das es herunterlädt und eine Logik hinzufügt, die eine Überprüfung durchführt und zusätzlich bestimmte Ausnahmen definiert (siehe Feature-Anfrage):

LogWriterNotSetException und LogWriterAlreadySetException

BEARBEITEN

Struck-out-Forking, da dies Auswirkungen auf die Lizenzierung haben würde. Das Eigentumsrecht wurde nicht für den Protokollierungsanwendungsblock übertragen. Nur Unity und Prism wurden übertragen .

Nach einem kommentieren Sie den Hinweis darüber die Zukunft der Einheit , von einem P & amp; P Mitglied:

  

Für den Protokollierungsanwendungsblock halten wir es für ausgeschlossen   Semantic Logging (früher Semantic Logging Application Block oder   SLAB).

     

Ссылка

     

Mit anderen Worten, wir beabsichtigen nicht, an der Logging-Anwendung zu arbeiten   Blockieren und wir haben nicht vor, es auf neue Besitzer zu übertragen.

Also ist es am besten für jemanden, der an etwas Neuem arbeitet, Semantic Logging

auszuprobieren     
user919426 09.08.2016, 20:04
quelle
2

Laut dieser CodePlex-Diskussion ,

  

Das Boosterverhalten von Enterprise Library hat sich in Version 6 geändert. Die Auswirkung für die statische Logger-Fassade ist, dass Sie das interne LogWriter (zum Beispiel beim Start der Anwendung) setzen müssen

Wenn Sie sich in einem Webanwendungsszenario befinden, ist Application_Start() der geeignete Weg:

%Vor%

Ansonsten richten Sie die Dinge in Main() method (oder irgendwo daneben - sagen wir bei der Container-Initialisierung) ein.

    
Anton Gogolev 04.08.2016 11:43
quelle