unit TestCase1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, fpcunit, testutils, testregistry, AG.Logs{$IFDEF MSWINDOWS},Windows{$ENDIF}; type TTestCase1= class(TTestCase) published procedure TestHookUp; end; implementation procedure Test(s:string); begin Write(s); end; procedure TTestCase1.TestHookUp; var MultiLog:TAGLog; Stream:TStream; s:TBytes; begin MultiLog:=TAGMultiLog.Create(nil); (MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create()); (MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log')); (MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create()); {$IFDEF MSWINDOWS}(MultiLog as TAGMultiLog).Logs.Add(TAGCommandLineLog.Create(GetStdHandle(STD_OUTPUT_HANDLE))){$ENDIF}; Stream:=nil; try Stream:=TFileStream.Create('test2.log',fmOpenRead+fmShareDenyNone); SetLength(s,Stream.Size); Stream.Read(s[0],Stream.Size); except SetLength(s,0); end; FreeAndNil(Stream); Stream:=TFileStream.Create('test2.log',fmCreate+fmOpenReadWrite+fmShareDenyWrite); Stream.Write(s[0],Length(s)); (MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream)); SetLength(s,0); (MultiLog as TAGMultiLog).Logs.Add(TAGCallBackLog.Create(@Test)); MultiLog.Write('Str Test'); MultiLog.Write('Str+Object Test',self); FreeAndNil(MultiLog); end; initialization RegisterTest(TTestCase1); end.