diff --git a/tests/utils/dbdigest.pp b/tests/utils/dbdigest.pp
index cee1674cf5..97529b88e8 100644
--- a/tests/utils/dbdigest.pp
+++ b/tests/utils/dbdigest.pp
@@ -67,6 +67,7 @@ TConfigOpt = (
   coPassword,
   coPort,
   coLogFile,
+  coLongLogFile,
   coOS,
   coCPU,
   coCategory,
@@ -100,6 +101,7 @@ ConfigStrings : Array [TConfigOpt] of string = (
   'password',
   'port',
   'logfile',
+  'longlogfile',
   'os',
   'cpu',
   'category',
@@ -132,7 +134,7 @@ ConfigAddCols : Array [TConfigAddOpt] of string = (
  );
 
 ConfigOpts : Array[TConfigOpt] of char
-           = ('d','h','u','p','P','l','o','c','a','v','t','s','m','C','S','r','V');
+           = ('d','h','u','p','P','l','L','o','c','a','v','t','s','m','C','S','r','V');
 
 Var
   TestOS,
@@ -144,6 +146,7 @@ Var
   UserName,
   Password,
   Port,
+  LongLogFileName,
   LogFileName,
   Submitter,
   Machine,
@@ -185,6 +188,7 @@ begin
     coPassword     : Password:=Value;
     coPort         : Port:=Value;
     coLogFile      : LogFileName:=Value;
+    coLongLogFile  : LongLogFileName:=Value;
     coOS           : TestOS:=Value;
     coCPU          : TestCPU:=Value;
     coCategory     : TestCategory:=Value;
@@ -376,9 +380,61 @@ begin
     CleanTestRun(TestRunID);
 end;
 
-Function GetLog(FN : String) : String;
+
+var
+  LongLogFile : Text;
+const
+  UseLongLog : boolean = false;
+
+Function GetContentsFromLongLog(Line : String) : String;
+var
+  S : String;
+  IsFirst, IsFound : boolean;
+begin
+  Result:='';
+  IsFirst:=true;
+  IsFound:=false;
+  While Not(EOF(LongLogFile)) do
+    begin
+      ReadLn(LongLogFile,S);
+      if pos(Line,S)=1 then
+        begin
+          IsFound:=true;
+          while not eof(LongLogFile) do
+            begin
+              ReadLn(LongLogFile,S);
+              { End of file marker }
+              if eof(LongLogFile) or (pos('>>>>>>>>>>>',S)=1) then
+                exit;
+              Result:=Result+S+LineEnding;
+            end;
+        end
+      else if IsFirst then
+        begin
+          Verbose(V_Warning,'Line "'+Line+'" not found as next "'+S+'"');
+          IsFirst:=false;
+        end;
+    end;
+  if not IsFound then
+    begin
+      Verbose(V_Warning,'Line "'+Line+'" not found');
+      { Restart to get a chance to find others }
+      if eof(LongLogFile) then
+        begin
+          Close(LongLogFile);
+          Reset(LongLogFile);
+        end;
+    end;
+end;
+
+Function GetLog(Line, FN : String) : String;
 
 begin
+  if UseLongLog then
+    begin
+      Result:=GetContentsFromLongLog(Line);
+      exit;
+    end;
   FN:=ChangeFileExt(FN,'.log');
   If FileExists(FN) then
     Result:=GetFileContents(FN)
@@ -386,9 +442,14 @@ begin
     Result:='';
 end;
 
-Function GetExecuteLog(FN : String) : String;
+Function GetExecuteLog(Line, FN : String) : String;
 
 begin
+  if UseLongLog then
+    begin
+      Result:=GetContentsFromLongLog(Line);
+      exit;
+    end;
   FN:=ChangeFileExt(FN,'.elg');
   If FileExists(FN) then
     Result:=GetFileContents(FN)
@@ -400,7 +461,7 @@ Procedure Processfile (FN: String);
 
 var
   logfile : text;
-  line,prevLine : string;
+  fullline,line,prevLine : string;
   TS,PrevTS : TTestStatus;
   ID,PrevID : integer;
   Testlog : string;
@@ -414,11 +475,12 @@ begin
 {$i-}
   reset(logfile);
   if ioresult<>0 then
-    Verbose(V_Error,'Unable to open log file'+logfilename);
+    Verbose(V_Error,'Unable to open log file'+FN);
 {$i+}
   while not eof(logfile) do
     begin
     readln(logfile,line);
+    fullline:=line;
     If analyse(line,TS) then
       begin
       Verbose(V_NORMAL,'Analysing result for test '+Line);
@@ -439,13 +501,13 @@ begin
           begin
           If Not (TestOK[TS] or TestSkipped[TS]) then
             begin
-              TestLog:=GetExecuteLog(Line);
+              TestLog:=GetExecuteLog(Fullline,Line);
               if pos(failed_to_compile,TestLog)=1 then
-                TestLog:=GetLog(Line);
+                TestLog:=GetLog(Fullline,Line);
             end
           else
             TestLog:='';
-          { AddTestResult can fail for test that contain %recompile 
+          { AddTestResult can fail for test that contain %recompile
             as the same }
           if AddTestResult(ID,TestRunID,Ord(TS),TestOK[TS],
                TestSkipped[TS],TestLog,is_new) <> -1 then
@@ -459,17 +521,17 @@ begin
             begin
               Verbose(V_Warning,'Test: "'+line+'" already registered');
             end;
-              
+
           end;
         end
-      else  
+      else
         begin
           Inc(StatusCount[TS]);
           PrevTS:=TS;
           PrevID:=RequireTestID(line);
           PrevLine:=line;
         end;
- 
+
       end
     else
       begin
@@ -516,9 +578,20 @@ begin
   If LogFileName<>'' then
     begin
     ConnectToDatabase(DatabaseName,HostName,UserName,Password,Port);
+    if LongLogFileName<>'' then
+      begin
+{$I-}
+        Assign(LongLogFile,LongLogFileName);
+        Reset(LongLogFile);
+        If IOResult=0 then
+          UseLongLog:=true;
+{$I+}
+      end;
     GetIDs;
     ProcessFile(LogFileName);
     UpdateTestRun;
+    if UseLongLog then
+      Close(LongLogFile);
     end
   else
     Verbose(V_ERROR,'Missing log file name');