NAV Logging

Estimated reading time: 7 minutes

Have you ever wished you could see into the past? What is the most natural thing in the world with photo albums and television is almost impossible with Navision or Business Central.

Und doch ist es so nötig, und so hilfreich! Denn eine alte Programmiererweisheit sagt: Programming is debugging. Eine andere Weisheit sagt: 90/20 Fehler… Bei 90% der Fehler sitzt der Fehler 20 cm vor der Tastatur… nur: Wie will man solche Dialoge führen?
Programmierer: Das Einzige, was zu dieser Fehlermeldung führen kann, ist, wenn Sie in dem Feld „Menge“ das Wort „Pinguin“ eintippen. Haben Sie das getan?
Anwender: Ich? Niemals!

Wie schön wäre es, könnte man doch nun vielleicht 1 oder 2 Stunden zurücksehen, um festzustellen, was der Anwender nun wirklich an dieser Stelle eingegeben hat…


Navision & Business Central 365 Log-Funktionen

In general, you only have these resources:
Changelog: Je nach Änderungsfrequenz in den Tabellen knallt Ihnen das Logging über das Änderungsprotokoll schnell ihre Datenbank voll. Längst nicht mehr relevante, 5 Jahre alte Informationen konkurrieren dabei um minütliche Änderungen, z.B. in Verkaufszeilen und Fibu Buchungsblättern. Dazu kommt die Last auf dem Server und in der Datenbank, verbunden mit Tablelockings. Nicht ohne Grund habe ich dazu einen eigenen Artikel geschrieben, der das „Aufräumen in einer Navision-Datenbank“ bzw. das „Bereinigen und verkleinern einer Navision-Datenbank“ näher beschreibt.
Modified on: The master data of Navision or Business Central usually contains the field "Changed on" (supplemented by most companies with "Changed by" and "Created on/by"). Although this saves a lot of space, it tells you when the last change was made to this record, but not which change.
Guess. "If it says this now, it could have said this before."
Data backups. In a nice Navision and Business Central development environment, for example, you have an automatic development version for every day of the month for the last 30 days, which you can look up at any time. But even this only reveals the actual status at the time of the data backup.
Debugger: Unfortunately, this only allows you to research the current status of Business Central & Navision, and that only with an immense amount of time. Even if you have a very good idea of where the error could or should occur, you have to use the debugger to watch the same program code at work over and over again in endlessly long sessions around critical code. This is about as productive and exciting as watching paint dry.

The solution: Datei-Logging. Dabei wird mit einer generischen, leicht aufzurufenden und immer gleichen Funktion eine von Ihnen festgelegte Information pro Tag/Sitzung in eine Datei geschrieben („ein Navision Log wird geschrieben“, oder, kürzer: Navision (bzw. Business central 365) Daten werden geloggt).
Ältere Versionen des Logs werden dabei automatisch gelöscht, so das auch nach Jahren immer nur frische Informationen der jeweils aktuellen Programmstände zur Verfügung stehen.

Da hier keine Konkurrenz der Prozesse entsteht, ist diese Lösung sehr schnell und Lock-frei. Und die Datenbank wird nicht mit 99% unnötigen Informationen zugemüllt, so wie bei anderen Navision Log Funktionen, namentlich das Changelog.

Navision-Log in einer Textdatei

Sie entscheiden selbst, wann und wo Sie welche Informationen weg schreiben („Loggen“ bzw. in das Navision Log schreiben). z.B. gesetzte Filter, gefundene Sätze, gewählte Sortierungen:

Screenshot von etwas komplizierterem Navision / Business Central Programmcode, angereichert um Debugging-Informationen zur Fehlersuche.

Im Log können Sie sich dann gemütlich, sowohl beim Entwickeln wie auch bei der viel später auftretender Fehlersuche, die komprimierten Ergebnisse im Navision Log ansehen, und müssen dabei nicht mit blutenden Fingern durch den Debugger von Business Central oder durchsteppen:

10:11:45. 67,PAGE 50195,20-FA-10572,Korrekte Spalte suchen,Status=CONST(Released),FA-Nr.=CONST(10572),Arbeitsplanref.-Nr.=CONST(10000),Arbeitsplannr.=CONST(000643),Arbeitsgangnr.=CONST(30)
10:11:45. 67,PAGE 50195,20-FA-10572,Spalte gefunden,201
10:11:45. 67,PAGE 50195,20-FA-10572,Alter Inhalt,0
10:11:45. 83,PAGE 50195,20-FA-10572,Dauer umrechnen,Orig: 50,57 active FAs 1 Worker 2
10:11:45. 86,PAGE 50195,20-FA-10572,Alt Neu Gesamt,0 101,14 101,14
10:11:45. 89,PAGE 50195,20-FA-10572,Zeit aktualisiert,BDE:50 Minuten 34 Sekunden/FA:101,14

Da sich die „Log“ Codeunit selbst um
-Creating a new logging file
-Delete outdated log files (freely adjustable)
-Expand & format the log file
the call (see 1st screenshot) is correspondingly simple.
Da die Log-datei immer lokal abgelegt wird (so zumindest meine Empfehlung), und am besten noch auf einer SSD oder zumindest RAM-Cache gepuffert, verzögert das Logging i.d.R. nicht den regulären Programmablauf. Typisch ist mit mindestens 15 Logzeilen pro Millisekunde zu rechnen. Ein einziger dadurch gefundener falsch gesetzter Filter/Key rechtfertigt (aus Laufzeitsicht) in der Regel mehrere tausend Logzeilen. Aber natürlich gilt es auch hier Augenschein zu bewahren: Wenn durch eine Schleife schnell mal 10tausend Logeinträge in die Log Datei geschrieben werden, geht das auch nicht spurlos an der Verarbeitungsgeschwindigkeit vorbei. Wie auch. Log-Einträge kosten, wie jede Datenverarbeitung, auch unter Navision und Business Central 365 am Ende… Zeit!

Da die Logfunktion so schnell arbeitet und keinerlei sonstige Seiteneffekte im System oder dem Datenbankserver verursacht, können auch Eingaben, Dateischnittstellen (was kommt? Was geht?), ungewöhnliche Berechnungen (kommt da eigentlich immer das erwartete Ergebnis raus?) etc. problemlos auf Dauer in einer Navision Log Datei überwacht werden.

Und im Navision Log fällt viel schneller auf, wenn ein erwarteter Programmcode gar nicht durchlaufen wird, oder zu oft, oder in einer nicht optimalen Reihenfolge. Oder Reihenfolgen unerwartete springen, z.B. weil Schlüsselfelder modifiziert wurden. Auch ungewöhnlich lange Laufzeiten (jeder Find mit mehr als 7 ms ist zu lange!) zeigen auf einen Blick falsch gesetzte Filter/Schlüssel/Abfragestrategien. Endlos lange Wiederholungen weißen auf sinnlose Iterationen hin – rein optisch leicht im Navision Log zu finden!

In this way, even complex issues can be quickly broken down into logical sub-blocks with comprehensible entry and exit states.

Dateien, die nicht benötigt werden (erfahrungsgemäß mehr als 99.9%) verschwinden nach einer Woche wieder automatisch & rückstandslos.

Einfaches Anzeigen der Navision Log-Datei mit jedem Texteditor

Did you know that you can force any file with text content into the text preview in Windows File Explorer? Log files, for example, are not displayed in the preview by default.

Necessary changes in the registry. The first change is necessary for Windows to be able to treat any file with text content as a text file. It does not yet change any display behavior!

EditFlags is already there and will not be changed. The other values:
[HKEY_CLASSES_ROOT]
@=“Textfile“
„Content Type“=“text/plain“
„PerceivedType“=“text“
„PersistentHandler“=“{5e941d80-bf96-11cd-b579-08002b30bfeb}“


And, using the example of *.log files, the registry extensions required for each extension to be displayed as a text file:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT.log]
@=“txtfile“
„PerceivedType“=“text“
„Content Type“=“text/plain“
[HKEY_CLASSES_ROOT.log\PersistentHandler]
@=“{5e941d80-bf96-11cd-b579-08002b30bfeb}“