diff --git a/pykat/testing/test.py b/pykat/testing/test.py
index ba740ab68b886a284a17d9492ac8bee09fd25cc1..95595f086834536abb66fdca31d1f4a180d1e509 100644
--- a/pykat/testing/test.py
+++ b/pykat/testing/test.py
@@ -262,7 +262,9 @@ class FinesseTestProcess(Thread):
                         
                         OUT_FILE = os.path.join(SUITE_PATH,basename + ".out")
                         shutil.move(OUT_FILE, SUITE_OUTPUT_DIR)
-                    
+                        
+                        LOG_FILE = os.path.join(SUITE_PATH,basename + ".log")
+                        shutil.move(LOG_FILE, SUITE_OUTPUT_DIR)
                     except utils.RunException as e:
                     
                         print "STDERR: " + e.out
@@ -334,14 +336,14 @@ class FinesseTestProcess(Thread):
                     # store the rows which are different
                     ix = np.where(rel_diff >= self.diff_rel_eps)[0][0]
                 
-                    self.output_differences[suite][out] = (ref_arr[ix],
+                    self.output_differences[suite][out] = (True,
+                                                           ref_arr[ix],
                                                            out_arr[ix],
                                                            np.max(rel_diff))
                 else:
                     max = np.max(rel_diff) 
                     
-                    self.output_differences[suite][out] = ([],
-                                                           [],
+                    self.output_differences[suite][out] = (False,
                                                            max)
                 self.done_kats += 1
                 
@@ -373,10 +375,15 @@ class FinesseTestProcess(Thread):
             for k in self.output_differences[suite].keys():
                 isError = True
                 f.write(k + ":\n")
-                f.write("     ref: " + str(self.output_differences[suite][k][0]) + "\n")
-                f.write("     out: " + str(self.output_differences[suite][k][1]) + "\n")
-                f.write("     Max relative difference: " + str(self.output_differences[suite][k][2]) + "\n")
-
+                if self.output_differences[suite][k][0]:
+                    f.write("     Differences larger than " + str(self.diff_rel_eps) + "\n")
+                    f.write("     ref: " + str(self.output_differences[suite][k][1]) + "\n")
+                    f.write("     out: " + str(self.output_differences[suite][k][2]) + "\n")
+                    f.write("     Max relative difference: " + str(self.output_differences[suite][k][3]) + "\n")
+                else:
+                    f.write("     Differences smaller than " + str(self.diff_rel_eps) + "\n")
+                    f.write("     Max relative difference: " + str(self.output_differences[suite][k][1]) + "\n")
+                    
             f.write("\n\n" + str(len(self.output_differences[suite].keys())) + " errors in suite " + suite)
             for k in self.kat_run_exceptions[suite].keys():
                 isError = True
diff --git a/pykat/testing/web/templates/finesse_test_view.html b/pykat/testing/web/templates/finesse_test_view.html
index 39a3e7ecd278d9ce1175fdca5f189f68d98d317d..bae551d92d587be39433a3adba3bc153818c02a2 100644
--- a/pykat/testing/web/templates/finesse_test_view.html
+++ b/pykat/testing/web/templates/finesse_test_view.html
@@ -21,10 +21,10 @@
                 <td>Suite</td>
                 <td>Kat</td>
                 <td>Max Rel. Difference</td>
-                <td>View stderr/stdout</td>
                 <td>View .kat</td>
                 <td>View .out</td>
                 <td>View ref</td>
+                <td>View log</td>
                 <td>View Diff</td>
                 <td>View History
                 </thead>
@@ -34,14 +34,10 @@
                     <td>{{ suite }}</td>
                     <td>{{item[0]}}</td>
                     <td>{{item[1]}}</td> 
-                    {% if item[2][0].strip() %}
-                    <td><a target="_blank" href="/finesse/view/exception/{{view_test_id}}/{{suite}}/{{item[0]}}/">Error</a></td>
-                    {% else%}
-                    <td><a target="_blank" href="/finesse/view/exception/{{view_test_id}}/{{suite}}/{{item[0]}}/">Error</a></td>
-                    {% endif %}
                     <td><a target="_blank" href="/finesse/kat/{{suite}}/{{item[0]}}">Kat</a></td>
                     <td><a target="_blank" href="/finesse/out/{{view_test_id}}/{{suite}}/{{item[0]}}">Out</a></td>
                     <td><a target="_blank" href="/finesse/ref/{{suite}}/{{item[0]}}">Ref</a></td>
+                    <td><a target="_blank" href="/finesse/log/{{view_test_id}}/{{suite}}/{{item[0]}}">Log</a></td>
                     <td><a target="_blank" href="/finesse/view/{{view_test_id}}/diff/{{suite}}/{{item[0]}}">Diff</a></td>
                     <td><a target="_blank" href="/finesse/kat_history/{{suite}}/{{item[0]}}">History</a></td>
                 </tr>
@@ -59,6 +55,7 @@
                 <td>View .kat</td>
                 <td>View .out</td>
                 <td>View ref</td>
+                <td>View log</td>
                 <td>View Diff</td>
                 <td>View History
                 </thead>
@@ -71,6 +68,7 @@
                     <td><a target="_blank" href="/finesse/kat/{{suite}}/{{item[0]}}">Kat</a></td>
                     <td><a target="_blank" href="/finesse/out/{{view_test_id}}/{{suite}}/{{item[0]}}">Out</a></td>
                     <td><a target="_blank" href="/finesse/ref/{{suite}}/{{item[0]}}">Ref</a></td>
+                    <td><a target="_blank" href="/finesse/log/{{view_test_id}}/{{suite}}/{{item[0]}}">Log</a></td>
                     <td><a target="_blank" href="/finesse/view/{{view_test_id}}/diff/{{suite}}/{{item[0]}}">Diff</a></td>
                     <td><a target="_blank" href="/finesse/kat_history/{{suite}}/{{item[0]}}">History</a></td>
                 </tr>
@@ -115,6 +113,7 @@
                             {"bSearchable": false, "bSortable": false},
                             {"bSearchable": false, "bSortable": false},
                             {"bSearchable": false, "bSortable": false},
+                            {"bSearchable": false, "bSortable": false},
                             {"bSearchable": false, "bSortable": false}
                         ]
                     } );
diff --git a/pykat/testing/web/web_interface.py b/pykat/testing/web/web_interface.py
index be1b4e668f0b698c7eb0635fa6ec417fb2a6dbf3..482aa2152f1efd07f0ecb367f487530d97ab4f29 100644
--- a/pykat/testing/web/web_interface.py
+++ b/pykat/testing/web/web_interface.py
@@ -135,7 +135,11 @@ class FinesseProcessWatcher(Thread):
                         out = kat.replace(".kat",".out")
                         
                         if out in self.process_to_watch.output_differences[suite]:
-                            max_diff = self.process_to_watch.output_differences[suite][out][2]
+                            print "asdasd", self.process_to_watch.output_differences[suite][out]
+                            if self.process_to_watch.output_differences[suite][out][0]:
+                                max_diff = self.process_to_watch.output_differences[suite][out][3]
+                            else:
+                                max_diff = self.process_to_watch.output_differences[suite][out][1]
                         else:
                             max_diff = float('NaN')
                             
@@ -143,20 +147,16 @@ class FinesseProcessWatcher(Thread):
                             err = self.process_to_watch.kat_run_exceptions[suite][kat];
                             runexception = (str(err.err), str(err.out));
                         else:
-                            runexception = ("","")
+                            runexception = None
                         
                         #check if any errors
-                        v = self.process_to_watch.output_differences[suite][kat.replace(".kat",".out")]
-                        if len(v) > 0:
-                            error = True
-                        else:
-                            error = False
-                        
+                        vals = self.process_to_watch.output_differences[suite][kat.replace(".kat",".out")]
+                                                
                         kats_run.append(dict(suite = suite, 
                                              kat = kat,
                                              max_diff = float(max_diff),
                                              runexception = runexception,
-                                             error=error))     
+                                             error=vals[0]))     
                         
                         out = utils.git(["log",str(self.process_to_watch.get_version()),"-1",'--pretty="%ai"'],cwd=os.path.join(app.instance_path,"finesse_src"))
                         commit_date = out[0].replace("\\","").replace('"','').replace("\n","")
@@ -658,6 +658,21 @@ def finesse_view_ref(suite, out):
     response.headers["Content-type"] = "text/plain"
         
     return response
+   
+@app.route('/finesse/log/<test_id>/<suite>/<kat>', methods=["GET"])
+def finesse_view_log(test_id,suite, kat):
+    log = str(kat).replace(".kat",".log")
+    OUT_FILE = os.path.join(app.instance_path,"tests",str(test_id),"outputs",suite,log)
+    
+    if os.path.exists(OUT_FILE):
+        contents = open(OUT_FILE).read()
+    else:
+        contents = "log file not found"
+        
+    response = make_response(contents)
+    response.headers["Content-type"] = "text/plain"
+        
+    return response
     
 @app.route('/finesse/kat_history/<suite>/<kat>', methods=["GET"])
 def finesse_view_kat_history(suite, kat):
@@ -712,12 +727,14 @@ def finesse_view_exception(view_test_id,suite,kat):
     doc = doc["doc"]
     response = None
     
-    
     if "kats_run" in doc:
         for run in doc["kats_run"]:
             if run["kat"] == kat:
-                print "\n\n".join(run["runexception"])
-                response = make_response("\n\n".join(run["runexception"]))
+                print run["runexception"]
+                print "\n\n".join(str(run["runexception"]))
+                response = make_response("\n\n".join(str(run["runexception"])))
+    else:
+        print "NOTHING"
     
     if response is None:
         response = make_response("No error message")
@@ -744,7 +761,7 @@ def finesse_view(view_test_id):
         for run in doc["kats_run"]:
             suite = run["suite"]
             
-            
+            print "RUN ERROR",run["error"]
             if run["error"]:
                 if not suite in kats_err:
                     kats_err[suite] = []