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