diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
index f80bb2da9067edae3ce8135e8b9a9809e3ca49bf..d0065fe8eb66ced81217ae8c4f9c274d8d311cf1 100755
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
@@ -31,6 +31,7 @@ from threading import Condition
 from datetime import datetime
 import time
 import logging
+import subprocess
 from dateutil import parser, tz
 from flask import Flask
 from flask import render_template
@@ -546,6 +547,8 @@ def getTaskHtml(task_id):
 
     html += '<h1>Task %s</h1>' % task_id
 
+    html += '<p><a href="/tasks/%s/log.html">%s log</a></p> ' % (task['id'], task['type'])
+
     props = sorted(task.keys())
     html += '<tr><th>key</th><th>value</th></tr>\n'
 
@@ -631,7 +634,24 @@ def resourceClaimsForTaskHtml(task_id):
 
     return html
 
+@app.route('/tasks/<int:task_id>/log.html', methods=['GET'])
+def getTaskLogHtml(task_id):
+    task = rarpc.getTask(task_id)
+
+    cmd = []
+    if task['type'] == 'pipeline':
+        cmd = ['ssh', '-t', 'lofarsys@head01.cep4.control.lofar', 'cat /data/log/pipeline-%s-*.log' % task['otdb_id']]
+    else:
+        cmd = ['ssh', '-t', 'mcu001.control.lofar', 'cat /opt/lofar/var/log/MCU001\\:ObservationControl\\[0\\]\\{%s\\}.log*' % task['otdb_id']]
+
+    logger.info(' '.join(cmd))
 
+    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    out, err = proc.communicate()
+    if proc.returncode == 0:
+        return out, 200, {'Content-Type': 'text/plain; charset=utf-8'}
+    else:
+        return err, 500, {'Content-Type': 'text/plain; charset=utf-8'}
 
 def main():
     # make sure we run in UTC timezone