Logg
Logg är ett återanvändbart qlikskript som kan logga skriptaktiviteter i flera nivåer.
Exempler på anrop
call sublib.logg.start('Ladda databaser')
//Skript som laddar databaser
call sublib.logg.stop
Logg.qvs
///$tab sublib.logg
/**
Loggfunktioner som sparar ned info om
- Start
- Sluttid
- Rubrik
- Beskrivning
*/
SUB sublib.logg.start (_sublib.logg.loggrubrik, _sublib.logg.loggbeskrivning)
/**
Startar en nytt loggförfarande
@param1 [Valfri] Rubrik för loggrad som ska sparas
@param2 [Valfri] Beskrivning för loggrad som ska sparas
*/
/*Skapar eller adderar +1 till vL.sublib.logg.loggnivå för varje iteration*/
if isnull(TableNumber('LoggEvent')) OR isnull(vL.sublib.logg.loggnivå) then
LET vL.sublib.logg.loggnivå= 1;
else
vL.sublib.logg.loggnivå=vL.sublib.logg.loggnivå+1;
endif
LoggEvent:
LOAD
AutoNumberHash256(now(),'$(_sublib.logg.loggrubrik)') as [Logg-ID],
$(vL.sublib.logg.loggnivå) as [Loggnivå],
'$(_sublib.logg.loggrubrik)' as [Loggrubrik],
'$(_sublib.logg.loggbeskrivning)' as Loggbeskrivning,
Now() as [Logg starttid],
Timestamp(null()) as [Logg stoptid]
AutoGenerate 1;
SET _sublib.logg.loggrubrik=;
SET _sublib.logg.loggbeskrivning=;
ENDSUB //logg.start
SUB sublib.logg.stop
/**
Stänger senast öppnade loggrad. Loggraden får med detta anropet en [Logg stoptid]
*/
TmpLoggEvent:
NoConcatenate
LOAD
[Logg-ID],
[Loggnivå],
[Loggrubrik],
Loggbeskrivning,
[Logg starttid],
timestamp(now()) as [Logg stoptid]
Resident LoggEvent
Where
[Loggnivå] = $(vL.sublib.logg.loggnivå)
AND isnull( [Logg stoptid]);
Concatenate LOAD
[Logg-ID],
[Loggnivå],
[Loggrubrik],
Loggbeskrivning,
[Logg starttid],
timestamp([Logg stoptid]) as [Logg stoptid]
Resident
LoggEvent
Where
NOT (
[Loggnivå] = $(vL.sublib.logg.loggnivå)
AND isnull( [Logg stoptid])
)
;
DROP table LoggEvent;
RENAME Table TmpLoggEvent to LoggEvent;
/*
Nollställer eller reducerar -1 till vL.sublib.logg.loggnivå för varje iteration.
Nollställning görs för att undvika att variabel följer med in till applikationen efter att applikationen körts klart.
OBS: Om inte alla start har stängts med ett stop så kommer variabeln ligga kvar med ett värde.
*/
IF vL.sublib.logg.loggnivå = 1 then
SET vL.sublib.logg.loggnivå =;
ELSE
LET vL.sublib.logg.loggnivå= vL.sublib.logg.loggnivå-1; //alt(vL.sublib.logg.loggnivå-1, 0);
ENDIF
SET _sublib.logg.loggrubrik=;
ENDSUB //logg.stop
Du kan hämta hem en Qlik Sense applikation som demonstrerar denna sub från Github veglar/qliksense-sublib/releases
Hittar du fel eller ser förbättringsmöjligheter i koden så lägg gärna ett ärende här: https://github.com/veglar/qliksense-sublib/issues