Effizientes Logging in Automation Anywhere mit dem JIT Logging Package

Warum Logging für RPA unverzichtbar ist

Wie in der Softwareentwicklung allgemein spielt Logging auch in der Entwicklung von RPA-Bots eine entscheidende Rolle. Ob es darum geht, Fehler zu beheben, die Performance zu optimieren oder Compliance-Anforderungen zu erfüllen – ein gutes Logging-System ist der Schlüssel zu erfolgreichen Automatisierungsprojekten. Dieser Artikel zeigt, wie wir ein eigenes Logging-Package für Automation Anywhere entwickelt haben, um die Limitierungen der Standardfunktionen zu überwinden und unseren Entwicklungsprozess effizienter zu gestalten.

Warum ist Logging essentiell?

Logging dient als zentrale Informationsquelle, um den Zustand und das Verhalten eines Systems nachzuvollziehen. In RPA-Projekten, in denen Bots automatisierte Prozesse ausführen, sind detaillierte Logs unerlässlich, um Fehler schnell zu identifizieren, unerwartete Verhaltensweisen zu analysieren und die Stabilität der Automatisierung zu gewährleisten. Ohne aussagekräftige Logs ist es schwierig, nachzuvollziehen, warum ein Prozess fehlschlägt oder wo Optimierungspotenziale bestehen.

Vorteile eines effizienten Logging-Systems

Ein strukturiertes und effizientes Logging bietet mehrere Vorteile:

  • Schnelle Fehleranalyse: Entwickler können Probleme leichter diagnostizieren und beheben, wenn alle relevanten Informationen in den Logs vorhanden sind.
  • Bessere Nachvollziehbarkeit: Gerade bei RPA-Prozessen, die mehrere Systeme miteinander verbinden, hilft ein klares Logging dabei, die Abläufe transparent zu machen.
  • Optimierungsmöglichkeiten: Durch das Sammeln und Analysieren von Logs lassen sich Engpässe erkennen und die Performance der Automatisierung verbessern.
  • Compliance & Audits: In regulierten Branchen sind detaillierte Logs oft erforderlich, um nachweisen zu können, dass Prozesse korrekt und nachvollziehbar ausgeführt wurden.

Nachteile eines schlechten Logging-Ansatzes

  • Zu viele unnötige Logs: Wenn jeder Schritt geloggt wird, kann dies zu überladenen Log-Dateien führen, die schwer zu analysieren sind.
  • Fehlende Struktur: Unklare oder uneinheitliche Logs erschweren die Fehlersuche und die Analyse.
  • Doppelter Code-Aufwand: Ohne eine zentrale Logging-Funktion müssen Entwickler an mehreren Stellen Logs manuell schreiben, was die Wartung erschwert.

Grundlagen des Logging in Automation Anywhere

Automation Anywhere bietet standardmäßig die Aktion „Log to File: Log text to file“ an. Diese erlaubt es prozess-relevante Informationen, z.B. durchgeführte Aktionen, Variablen-Werte die für gewisse Bedingungen herangezogen wurden etc.,  in einer Datei zu speichern, die während der Bot-Ausführung generiert bzw. erweitert wird. Diese Basisfunktionalität deckt zwar einfache Anforderungen ab, stößt jedoch schnell an ihre Grenzen.

Standardmäßige Logging-Funktionen

  • Einfache Text-Logs ohne Strukturierung
  • Feste Timestamp-Formate
  • Auswahl des Datei-Encodings

Obwohl diese Funktionen für kleine Automatisierungsprojekte ausreichend sein können, fehlen erweiterte Funktionen welche für komplexere Prozesse und strukturiertes Logging erforderlich sind.

Einschränkungen der Log To File-Action in Automation Anywhere

Die Standardfunktionen von Automation Anywhere sind für viele Szenarien nicht ausreichend. Insbesondere führen folgende Einschränkungen zu Problemen:

  • Kein benutzerspezifisches Timestamp-Format: Entwickler können das verwendete Datums-/Zeitformat nicht an ihre Anforderungen anpassen, was vor allem in internationalen Unternehmen zu Verwirrung führt und die Analyse erschwert. 
  • Fehlende Log-Level-Unterstützung: Logs können nicht nach ihrer Relevanz gefiltert werden. Vor allem kann nicht gesteuert werden, welche Logs geschrieben werden. Möchte man zu Beginn der Go-Live-Phase detailliertere Debug-Logs haben, um anfängliche Fehler besser analysieren zu können, ist es nicht möglich, zu einem späteren Zeitpunkt auf ein niedrigeres Log-Level umzuschalten, um beispielsweise Speicherplatz zu sparen. 
  • Unstrukturierte Logs: Logs werden nur als einfacher Text ausgegeben, wodurch die Auswertung zeitaufwändig und fehleranfällig wird. Eine strukturierte Speicherung kann nur durch Coding-Guidelines vorgegeben, jedoch nicht enforced werden. 
  • Aufgeblähter Code: Um diese Funktionen manuell zu ergänzen, müssen Entwickler zahlreiche Zusatzaktionen und Bedingungen einbauen, was den Code unübersichtlich macht.

Hier ein Beispiel eines DEBUG-Logs mit eigenem Datumsformat, der nur dann geschrieben werden soll, wenn das System-Log-Level entsprechend gesetzt ist:

Diese Einschränkungen verdeutlichen, warum fortschrittliche Logging-Optionen essenziell sind. Ein Vergleich mit etablierten Tools wie Log4J zeigt, dass flexible Logging-Mechanismen ein Schlüsselfaktor für die Effizienz und Wartbarkeit von Softwareprojekten sind. Um diesen Standard auch in Automation Anywhere zu erreichen, haben wir ein eigenes Logging-Package entwickelt.

Planung eines eigenen Log-Packages

Ziele der Entwicklung

Das Hauptziel bei der Entwicklung unseres Log-Pakets war es, die Einschränkungen des Standard-Pakets zu umgehen und eine Lösung zu schaffen, die den branchenüblichen Anforderungen entspricht. Das Standard-Logging-Angebot bot uns nicht die nötige Flexibilität, um spezifische Anforderungen an unsere RPA-Prozesse zu erfüllen. Unsere Lösung sollte daher anpassbar und skalierbar sein, um eine hohe Effizienz bei der Log-Erstellung und -Verwaltung zu gewährleisten.

Flexibilität war eines unserer wichtigsten Ziele. Das Log-Paket sollte den Entwicklern die Möglichkeit bieten, Logs individuell anzupassen und in verschiedenen Formaten sowie mit unterschiedlichen Detailgraden zu erstellen. Diese Flexibilität stellt sicher, dass das Logging nicht nur den Anforderungen der aktuellen Automatisierungsprozesse entspricht, sondern auch problemlos an zukünftige Bedürfnisse angepasst werden kann, ohne die gesamte Struktur zu überarbeiten.

Ein weiteres Ziel war es, die Code-Effizienz zu maximieren. Wir wollten die Anzahl der benötigten Codezeilen pro Log-Eintrag so weit wie möglich reduzieren. Dies sollte den Entwicklungsaufwand minimieren und die Wartbarkeit des Codes erleichtern, da Entwickler nicht mit redundanten Log-Befehlen überfluten werden. Eine effiziente Lösung sorgt für klareren, besser wartbaren Code und trägt gleichzeitig dazu bei, dass das Loggen die Leistung des gesamten Systems nicht negativ beeinflusst.

Schließlich war Skalierbarkeit ein entscheidender Aspekt bei der Entwicklung. Unsere Lösung sollte nicht nur für kleine Projekte geeignet sein, sondern auch für komplexe, groß angelegte Automatisierungen, bei denen viele Prozesse und Instanzen gleichzeitig überwacht werden müssen. Eine skalierbare Lösung gewährleistet, dass das Log-System mit der wachsenden Komplexität und dem Umfang der Automatisierungen problemlos mithalten kann, ohne an Leistung oder Zuverlässigkeit zu verlieren.

Designentscheidungen

Bei der Entwicklung des Packages haben wir uns an der bestehenden „Log To File: Log to File“-Aktion orientiert und diese um wesentliche Elemente erweitert, um eine benutzerfreundliche und effiziente Lösung zu schaffen. Besonders wichtig war uns dabei, eine nahtlose Integration in bestehende Bots zu ermöglichen, sodass Entwickler mit minimalem Aufwand von der neuen Lösung profitieren können. Um den Übergang so reibungslos wie möglich zu gestalten, haben wir uns bei den einzugebenden Config-Parametern und der Darstellung im Automation Anywhere UI an der bestehenden Action orientiert. Dies erleichtert den Umstieg für Benutzer, die bereits mit der bisherigen Log-Aktion vertraut sind, und minimiert den Schulungsaufwand.

Zusätzlich zu den bekannten Parametern wurden neue UI-Elemente hinzugefügt, um die erweiterten Funktionen des neuen Log-Pakets abzubilden. Diese Erweiterungen bieten den Nutzern die Flexibilität, neue Logging-Funktionen zu nutzen, ohne sich mit einer komplexen Benutzeroberfläche auseinandersetzen zu müssen. Dabei haben wir besonderen Wert darauf gelegt, dass nur ein minimales Set an Eingaben notwendig ist, um das Package schnell und effizient zu verwenden. Dies sorgt für eine schnelle Implementierung in bestehende Automatisierungsprozesse, ohne die Benutzer mit unnötigen Optionen zu überladen. Gleichzeitig bleibt die Möglichkeit bestehen, das Package bei Bedarf flexibel und detailliert an die spezifischen Anforderungen der Nutzer anzupassen.

Schlüsselfunktionen des erweiterten Log-Packages

1. Log-Level

Die Verwendung von Log-Leveln ist für effizientes Logging essenziell, da es hilft, die Menge an Log-Einträgen zu steuern und die Analyse von Fehlern oder wichtigen Ereignissen zu erleichtern. 

Unser Package übernimmt diese Filterung automatisch und stellt sicher, dass nur Logs geschrieben werden, die dem hinterlegten System-Log-Level entsprechen. 

Jede Log-Aktion erlaubt die Angabe eines spezifischen Log-Levels (z. B. Info, Warning, Error), welche zur Laufzeit mit dem hinterlegten System-Loglevel abgeglichen wird, wodurch sichergestellt wird, dass nur relevante Informationen erfasst werden. 

Dadurch werden unnötige Einträge vermieden und die Log-Dateien bleiben übersichtlich, ohne dass Entwickler manuell auf die Einhaltung der Log-Level achten müssen.

 

2. Benutzerdefinierte Datumsformate

Entwickler können das Format der Timestamps flexibel anpassen, um die Lesbarkeit und Kompatibilität mit anderen Systemen zu verbessern. Dazu steht eine Auswahl an vordefinierten Datumsformaten zur Verfügung, alternativ kann auch ein vollständig benutzerdefiniertes Format festgelegt werden.

 

3. CSV-kompatibles Logging

Da Logs im tabellarischen Format die Lesbarkeit & Analyse sowie die Weiterverarbeitung in anderen Systemen, z.B. in unternehmensweite Log-Monitorin Systeme, erheblich verbessern, bietet das Package standardmäßig die Möglichkeit, die Informationen einer Log-Zeile spaltenweise zu gliedern. Der dazu verwendete Delimiter kann dabei individuell festgelegt werden.

 

4. Fehlerauslösung (Exception Handling)

Das Package ermöglicht es, direkt eine Exception mit dem angegebenen Log-Text zu werfen, was das Debugging und die Fehlerbehandlung in komplexen Szenarien erheblich vereinfacht. 

In vielen Fällen müssen sowohl ein Log-Eintrag geschrieben als auch ein Fehler-Event mit denselben Informationen erzeugt werden. Dies führt zu doppeltem Aufwand und erhöht die Fehleranfälligkeit, insbesondere bei Änderungen des Fehlertexts. Durch die direkte Fehlerauslösung über das Logging wird dieses Problem effizient gelöst, da Log-Eintrag und Exception in einem Schritt erfolgen.

Technische Umsetzung

Das Package wurde auf Basis des Automation Anywhere Package SDKs entwickelt, das Entwicklern ermöglicht, benutzerdefinierte Aktionen zu erstellen und in Automation Anywhere zu integrieren. Das SDK bietet eine flexible Umgebung zur Erweiterung der Standardfunktionen von Automation Anywhere und erlaubt es, leistungsfähige, wiederverwendbare und anpassbare Pakete zu entwickeln. Mit diesem SDK können Entwickler die Funktionalitäten von Automation Anywhere gezielt erweitern und ihre eigenen, maßgeschneiderten Lösungen erstellen. Weitere Informationen zum Automation Anywhere Package SDK sind hier verfügbar: Automation Anywhere Package SDK.

 

Die Entwicklung des erweiterten Logging-Packages wurde von unserem internen Entwicklungsteam in Java durchgeführt. Vorab wurde eine detaillierte Analyse der bestehenden „Log to File“-Aktion vorgenommen, um deren Struktur und Implementierung zu verstehen. Diese Analyse diente als Vorlage für die Umsetzung, um sicherzustellen, dass wir die Coding Guidelines von Automation Anywhere einhalten und eine saubere, standardkonforme Implementierung gewährleisten können. Durch die Orientierung an der bestehenden Action konnten wir sicherstellen, dass die Entwickler, die mit der neuen Lösung arbeiten, keine großen Umstellungen vornehmen müssen.

 

Bei der Entwicklung des Logging-Packages wurden folgende Prinzipien beachtet: 

  • Wiederverwendbarkeit durch modularen Code, der in verschiedenen Projekten eingesetzt werden kann. Diese Modularität erlaubt es, das Package flexibel für unterschiedliche Automatisierungsprozesse zu nutzen.
  • Benutzerfreundlichkeit war ein weiteres wichtiges Prinzip – wir haben intuitive Konfigurationsoptionen entwickelt, die den RPA-Entwicklern eine einfache und schnelle Anpassung der Logs ermöglichen. Schließlich wurde auch die 
  • Performance optimiert, um sicherzustellen, dass die Ausführung des Logging-Packages die Laufzeit der Bots nicht beeinträchtigt. Die Lösung wurde so entwickelt, dass sie effizient arbeitet und nur minimale Auswirkungen auf die Gesamtperformance der Automatisierungen hat, selbst bei komplexen Prozessen mit vielen Log-Einträgen.

 

Weitere Informationen zum Automation Anywhere Package SDK sind hier verfügbar: Automation Anywhere Package SDK.

Der Automation Anywhere Bot Store im Fokus

Der Automation Anywhere Bot Store ist eine zentrale Plattform, die es Entwicklern und Unternehmen ermöglicht, vorkonfigurierte Lösungen zu finden, die ihre Automatisierungsprojekte erheblich beschleunigen. Diese Plattform bietet einfachen Zugriff auf eine Vielzahl von Bots, Packages und Erweiterungen, die sofort in bestehende Automation Anywhere-Umgebungen integriert werden können. Der Bot Store fördert die Zusammenarbeit innerhalb der Automation Anywhere-Community, indem er eine breite Palette an wiederverwendbaren Automatisierungsressourcen zur Verfügung stellt, die die Entwicklungszeit verkürzen und die Effizienz steigern. Weitere Informationen sind hier verfügbar: Automation Anywhere Bot Store.

Der Bot Store bietet eine hervorragende Möglichkeit, unsere Lösung einer breiten Nutzerbasis zugänglich zu machen. Da wir auch davon überzeugt sind, dass eine aktive Community der Schlüssel zum Erfolg in der Automatisierungswelt ist steht unser Package ab sofort im Bot Store kostenfrei zur Verfügung.

Dadurch haben Entwickler und Unternehmen die Möglichkeit es direkt herunterzuladen und in ihre bestehenden Automation Anywhere-Umgebungen zu  integrieren, ohne lange Implementierungsphasen oder komplexe Installationsprozesse durchlaufen zu müssen. Die Verfügbarkeit im Bot Store sorgt dafür, dass unser Package einer breiten Nutzerbasis zugänglich gemacht wird, und ermöglicht eine einfache, benutzerfreundliche Installation und Konfiguration. Der direkte Link zu unserem Logging-Package im Bot Store lautet: Logging Extended JIT.

Verwendung des Packages

Das Logging-Package ist im Bot Store direkt zum Download verfügbar und lässt sich problemlos in bestehende Automation Anywhere-Umgebungen integrieren.

Wir haben bewusst darauf geachtet, dass die Installation und Konfiguration einfach und benutzerfreundlich ist, damit Entwickler schnell von der Lösung profitieren können. Nach der Installation erscheint es, wie alle anderen Packages und Actions, in der Action-Library und kann sofort verwendet werden. 

Die Verwendung des Packages ist denkbar einfach. Entwickler können es ähnlich wie die „Log to File“-Aktion verwenden, müssen jedoch keine zusätzlichen Aktionen oder Bedingungen mehr erstellen. Dadurch reduziert sich der Code pro Log-Eintrag von drei oder mehr Zeilen auf eine einzige, wodurch der gesamte Code in Summe um ein Vielfaches kompakter und übersichtlicher wird.

Feedback aus der Praxis

Das Package wurde während seiner Entwicklung in einem Kundenprojekt getestet und eingesetzt. Die Ergebnisse sprechen für sich:

  • Entwicklungszeit: Die Implementierung konnte deutlich schneller abgeschlossen werden.
  • Code-Qualität: Der Code ist deutlich übersichtlicher und einfacher zu warten.
  • Flexibilität: Benutzerdefinierte Optionen ermöglichten eine optimale Anpassung an die Anforderungen des Kunden.

 

Üblicherweise wurden pro Log-Eintrag drei Actions verwendet: eine Step Action als Gruppierung, eine Date Format Action zur Umwandlung des Timestamps ins benötigte Format und die Log to File Action, um den Log-Eintrag zu schreiben.


Vor der Umstellung bestand der gesamte Bot aus 3849 Zeilen Code, davon entfielen 946 Zeilen auf Logs, da für jede Log-Zeile drei Zeilen Code benötigt wurden. 

Durch die Verwendung unseres Log-Packages konnten zwei der drei Zeilen eliminiert werden, wodurch sich die Anzahl der Codezeilen auf 2903 reduzierte – eine Verringerung um 24,58 %.


Zusätzlich konnte durch unser Logging-Plugin sichergestellt werden, dass das gewünschte CSV-Format der Log-Datei eingehalten wurde, sowie dass der Timestamp immer im korrekten Format vorliegt und konsistente Spaltentrenner verwendet werden.


Ein weiterer Vorteil war, dass einige Error Handling: Throw-Actions, die direkt nach einer Log-Zeile kamen und denselben Text enthielten, entfernt werden konnten, da unser Log-Package diese Funktion ebenfalls übernimmt.

Fazit: Ein Schritt zu effizienteren RPA-Projekten

Das entwickelte Logging-Package bietet eine einfache, aber leistungsstarke Lösung für die Herausforderungen des Standard-Loggings in Automation Anywhere. Mit seinen erweiterten Funktionen, der einfachen Integration und dem positiven Feedback aus der Praxis ist es ein unverzichtbares Werkzeug für jeden Entwickler, der Wert auf effiziente und skalierbare Automatisierung legt.

Testen Sie unser Package noch heute und heben Sie Ihre Automatisierungsprojekte auf das nächste Level!

Learn how we helped 100 top brands gain success