Delphi.cz

Český portál Delphi

Logování za pomocí CodeSite 4

Součástí Delphi XE je i Express verze nástroje CodeSite.

CodeSite je dle mého celkem podařený nástroj pro logování fungující na bázi klient - server, kdy při kompilaci je do programu začleněn kód komunikačního klienta. Komunikace je pomocí zasílání zpráv WmCopyData (standard) nebo pomocí TPC/IP (volitelně, ale v plné verzi i na vzdálené počítače). Tento nástroj poskytuje zajímavé možnosti i v této Express verzi.

Živé logování

Základním módem logování je mód živého logování, kdy při prvním zápisu do "logu" je spuštěn interaktivní prohlížeč logu, který přijímá logovací informace a v reálném čase je zobrazuje.

Pro použití logování je třeba přidat jednotku CodeSiteLogging a pak v programu napsat např.

  CodeSite.Send( 'logovaná informace');

což bylo hodně primitivní využití. Možností je mnohem více.

CodeSite.Send

Zkusíme něco komplikovanějšího. Mějme VCL aplikaci a ve formuláři v obsluze OnCreate (při použití uvedené jednotky):

procedure TForm1.FormCreate(Sender: TObject);
var
  b: TButton;
  procedure Vnitrni;
  begin
    CodeSite.Send( 'Třetí hláška', Self );
  end;

begin
// CodeSiteManager.ConnectUsingCopyData; // default
//  CodeSiteManager.ConnectUsingTcp;
//  CodeSiteManager.Enabled := False; // zakaz logovani
  CodeSite.Send( 'První hláška', Self );
  Caption := 'testovací'; // zmena Caption pro demonstraci
  CodeSite.Send( 'Druhá hláška', Self );
  CodeSite.EnterMethod(Self, 'Vnitrni');
  Vnitrni;
  CodeSite.ExitMethod(Self, 'Vnitrni'{,Result});


  // test vyjimek
  b := nil;
  try
    b.Click;
  except
    on E:Exception do
    begin
      CodeSite.SendMsg('Moje poznamka');
      CodeSite.SendException(E);
    end;
  end;
end;

V prohlížeči logu budou postupně tyto informace (detail se zapíná kliknutím na lupu):

CodeSite

Všimněte si, že předáním parametru objektu jsem umožnil zobrazení detailu objektu!

CodeSite

Speciální pozornosti je třeba property Caption.

CodeSite

Trasování volání pomocí CodeSite.EnterMethod a CodeSite.ExitMethod.

CodeSite

Zobrazení výjimky.

Logování do souboru

Někdy je takové živé logování nepraktické (třeba u klienta) a raději oceníme soubor, který si v klidu a teple poté prohlédneme. V tomto případě provedeme "přesměrování".

var
  Dest: TCodeSiteDestination;

begin
  Dest := TCodeSiteDestination.Create( Self );

  Dest.LogFile.Active := True;
  Dest.LogFile.FileName := 'MyFirstLog.csl';
  Dest.LogFile.FilePath := '$(MyDocs)';

//  Dest.Viewer.Active := True;   // pokud chceme i zaroven LiveView

  CodeSite.Destination := Dest;
  CodeSite.Send( 'do souboru', Sender );

Kde $(MyDocs) je alias pro Dokumenty. Tento soubor lze pak otevřít dříve uvedeným programem. Navíc pokud odkomentujeme uvedený řádek, bude prováděno logování jak do souboru, tak do živého prohlížení.

Poznámky

Odstranění logování je možno buďto podmíněnou kompilací, nebo v případě, že nám stačí jeho zákaz tak pomocí

  CodeSiteManager.Enabled := False; // zakaz logovani

Plná verze umí logování i na vzdálený počítač via TCP (CodeSiteManager.ConnectUsingTcp), zasílání bitmap, screenshotů, streamů atd. (dle dokumentace).

Datum: 2010-12-28 00:37:00 Tagy: ladeni, nastroje, delphi XE

Nástroje