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
... ergibt auch eine Ausnahme, Wie würde man dann prüfen, ob der Schreiber eingestellt ist oder nicht?
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
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
auszuprobierenLaut 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:
Ansonsten richten Sie die Dinge in Main()
method (oder irgendwo daneben - sagen wir bei der Container-Initialisierung) ein.
Tags und Links c# exception-handling logging enterprise-library-6