Performance Tuning: Wie handhabt man das ActivityLog?

16. September 2008 13:55

Hallo,

Ich gehe gerade den Navision-Performance-Troubleshooting Guide durch anhand der Datei
w1w1PerfTGuide.pdf.
Auf den Seiten 15 und 16 wird leider nur unzulänglich beschrieben, wie das ActivityLog benutzt wird.
Auf S. 16 heisst es: … CU150000, Sample use of Activity Log shows you how to enable this feature. After you have enabled the feature and carried out the activity that you are interested in monitoring, select the activity and click Activity, Table Size Changes to see the changes that were made to the database.
Mir ist nicht klar, wie ich jetzt Navision dazu bewege, für eine beliebige Aktivität (Anlegen eines
Kreditors/Debitors, eines Teils (Item), Buchungen oder ähnliches) die Änderungen in den entsprechenden Tabellen tatsächlich aufzuzeichnen. Wo genau muss ich das Feature enablen?
Klar ist, dass irgendwo die Code-Zeile
Code:
ActivityLog."Table Size Changes Logged" := TRUE;
rein muss, aber wo?

Zuerst dachte ich, ich könnte die Aus-Kommentierung in CU150000 (Sample use of Activity Log) einfach herausnehmen, diese CU einmal durchlaufen lassen, und danach würden jegliche Aktivitäten gelogged. Aber so geht es nicht. Wie dann?
Muss in jede einzelne Aktivität, die ich aufgezeichnet haben will hinein und dort den Code anpassen? Dann muss man jedes mal ganau wissen, durch welche Methode etc. ein Debitor/Kreditor etc. letztlich angelegt wird.
Und wodurch genau erscheinen dann Zeilen im Aktivity Log? Durch Händisches Einfügen in den jeweiligen Code von Zeilen wie ActivityLog.Start und ActivityLog.Update und ActivityLog.StartUpdate?
Und am Ende muss man sorgfältigst alle Code-Zeilen wieder herausnehmen?
Das scheint mir zu umständlich.

Könnte jemand das mal erläutern?

Danke und Gruß

Re: Performance Tuning: Wie handhabt man das ActivityLog?

16. September 2008 14:30

Hallo Andreas,

es ist genau so wie du vermutest. Das Activity Log dient der Aufzeichnung von Prozessen, in denen das Activity Log durch Zusatzprogrammierung aufgerufen wird. Damit kann man z.B. Zeitmessungen gezielter einsetzen als mit den anderen Tools.

Ich hab das immer so gemacht, dass ich mir die Prozesse vorher angesehen habe, entschieden welche Objekte angefasst werden müssen und dann diese erstmal weggesichert. Danach grob die Aufrufe "verteilt" und mitgeschnitten. Im Anschluss war dann klar, wo ggf. etwas genauer geloggt werden muss. Das hab ich dann noch nachgezogen, bis ich das gewünschte Ergebnis hatte.

Ich gehe davon aus, dass dir der Client Monitor mit Code Coverage und der Erweiterung der Client Monitor Objekte nicht ausreicht?

Re: Performance Tuning: Wie handhabt man das ActivityLog?

17. September 2008 10:32

Hallo,
danke für die Hinweise.
Wie ich es verstehe, ist das ActivityLog nur für C/AL-Programmierer.

Es müssten genau der auslösende Code gefunden werden für die interessanten Prozesse und dieser Code müsste mit den Aufrufen ActivityLog.start und ActivityLog.stop geklammert werden?
Zusätzlich müsste ich mit ActivityLog.description die Beschreibung sinnig setzen und das Aufzeichnen meiner Beschreibung mit ActivityLog.Update bzw. ActivityLog.StartUpdate herausschreiben? Wenn es eine aufwendiger Prozess/Methode ist, füge ich es eben sozusagen als DebugText an verschiedenen Stellen im Code ein? Dann den Prozess über die Gui auslösen und jetzt erst könnte ich etwas sehen?
Und während ActivityLog.Update mit ActivityLog.Start und ActivityLog.Stop geklammert sein muss, ist das bei ActivityLog.StartUpdate und ActivityLog.StopUpdate nicht der Fall?

Also allein mit dem .pdf zum PerformancTuning ist das nicht erklärt geschweige denn umsetzbar.

Gruß