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.

Zkusíme něco komplikovanějšího. Mějme VCL aplikaci a ve formuláři v obsluze OnCreate (při použití uvedené jednotky):
1procedure TForm1.FormCreate(Sender: TObject);
2var
3 b: TButton;
4 procedure Vnitrni;
5 begin
6 CodeSite.Send( 'Třetí hláška', Self );
7 end;
8
9begin
10
11
12
13 CodeSite.Send( 'První hláška', Self );
14 Caption := 'testovací';
15 CodeSite.Send( 'Druhá hláška', Self );
16 CodeSite.EnterMethod(Self, 'Vnitrni');
17 Vnitrni;
18 CodeSite.ExitMethod(Self, 'Vnitrni');
19
20
21
22 b := nil;
23 try
24 b.Click;
25 except
26 on E:Exception do
27 begin
28 CodeSite.SendMsg('Moje poznamka');
29 CodeSite.SendException(E);
30 end;
31 end;
32end;
V prohlížeči logu budou postupně tyto informace (detail se zapíná kliknutím na lupu):

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

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

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

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í".
1var
2 Dest: TCodeSiteDestination;
3
4begin
5 Dest := TCodeSiteDestination.Create( Self );
6
7 Dest.LogFile.Active := True;
8 Dest.LogFile.FileName := 'MyFirstLog.csl';
9 Dest.LogFile.FilePath := '$(MyDocs)';
10
11
12
13 CodeSite.Destination := Dest;
14 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).