+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Logging bei Verwendung als Service / Web Reporting

(combit Team) #1
Gilt ab List & Label 8
Für normale Desktopanwendungen sind die Aufzeichnung der Logausgaben von List & Label mit Debwin und das integrierte Schreiben einer Protokolldatei einfache und praktische Lösungen.
 
Bei Webanwendungen, Windows-Diensten und Mehrbenutzersystemen geraten diese Vorgehensweisen aber an ihre Grenzen: Debwin und die integrierte Protokolldatei verwenden genau eine Logdatei je Prozess, sodass Logausgaben mehrerer, parallellaufender Jobs nicht getrennt werden können. In diesen Situationen empfiehlt sich die Nutzung eines eigenen Logging-Mechanismus oder eines Logging-Frameworks wie NLog oder log4net. Sie können dazu eine Klasse erstellen, die von LoggerBase abgeleitet ist (oder selbst das ILlLogger-Interface implementiert) und ein Objekt dieser Klasse an den Konstruktor des ListLabel-Objekts übergeben. Anschließend werden alle Logausgaben von List & Label an dieses Objekt weitergeleitet. Die Logausgaben können anhand verschiedener Prioritäten (Debug-Ausgabe, Information, Warnung und Fehler) und Kategorien (z.B. Datenprovider, .NET-Komponente, Druckerinformation, etc.) gefiltert werden. Im mitgelieferten Beispielprojekt "C# Custom Logger Sample" finden sich Beispiele für einen eigenen Logger und einfache Adapter-Klassen zur Anbindung der verbreiteten Logging-Frameworks NLog und log4net an List & Label. 
 
Beispiel: Logausgaben an NLog weiterleiten: 
ILogger nlogLogger = NLog.LogManager.GetLogger("MyApp.Reporting"); 
ILlLogger llLogger = new ListLabel2NLogAdapter(nlogLogger); 
ListLabel LL = new ListLabel(llLogger); 
 
Bitte beachten Sie: 
  • Die Eigenschaften "Debug" und "DebugLogFilePath" der ListLabel-Klasse werden ignoriert, wenn Sie einen eigenen Logger übergeben.
  • Beschränken Sie die Logausgaben in Ihrer ILlLogger-Implementierung mit Hilfe der WantOutput()-Funktion auf ein Minimum, um die Performance nicht zu stark zu beeinträchtigen.
  • Die meisten der mitgelieferten Datenprovider unterstützen (optional) ebenfalls ein externes Logger-Objekt. Diese Datenprovider implementieren die Schnittstelle ISupportsLogger und verfügen über eine SetLogger()-Funktion. Falls ein Datenprovider kein eigenes Logger-Objekt hat, wird das der ListLabel-Instanz übernommen. 
 
Tipp für NLog: Oft werden viele Logmeldungen in kurzer Zeit ausgegeben. Verwenden Sie das AsyncWrapper-Target für eine asynchrone Verarbeitung der Logausgaben, sodass List & Label nicht auf diese warten muss. 


Bis Version 21:

Um in früheren Versionen bei Verwendung in Services Debug-Informationen zu erhalten, rufen Sie LlSetDebug wie folgt auf:

LlSetDebug(LL_DEBUG_CMBTLL | LL_DEBUG_CMBTLL_LOGTOFILE)
Alle Debug-Ausgaben werden nun in die Datei combit.log im %APPDATA% (bis Version 13: Windows)-Verzeichnis umgeleitet. Das Pipe-Zeichen (|) bezeichnet den Or-Operator. Bitte setzen Sie den Or-Operator Ihrer Programmiersprache ein.

Verwandte Artikel:

KBTD000732
IDKBTD000488 KBTD000488