diff --git a/erp5/tests/testERP5TestNode.py b/erp5/tests/testERP5TestNode.py
index c6b0ef6f8bb290e3b70ec9983fbc3a7d50812be0..b14a28e7c171ea509e16d6c545a904b067f443bb 100644
--- a/erp5/tests/testERP5TestNode.py
+++ b/erp5/tests/testERP5TestNode.py
@@ -26,7 +26,7 @@ class ERP5TestNode(TestCase):
     self.slapos_directory = os.path.join(self._temp_dir, 'slapos')
     self.test_suite_directory = os.path.join(self._temp_dir,'test_suite')
     self.environment = os.path.join(self._temp_dir,'environment')
-    self.log_directory = os.path.join(self._temp_dir,'var/log')
+    self.log_directory = os.path.join(self._temp_dir,'var/log/testnode')
     self.log_file = os.path.join(self.log_directory,'test.log')
     self.remote_repository0 = os.path.join(self._temp_dir, 'rep0')
     self.remote_repository1 = os.path.join(self._temp_dir, 'rep1')
@@ -530,9 +530,11 @@ branch = foo
       for ref, suite in test_node.node_test_suite_dict.items():
         assert(suite.suite_log is not None)
         assert(isinstance(suite.suite_log, types.MethodType))
-        assert('var/log/suite/%s' % suite.reference in suite.suite_log_path)
+        self.assertTrue('var/log/testnode/%s' % suite.reference in \
+                         suite.suite_log_path,
+                         "Incorrect suite log path : %r" % suite.suite_log_path)
         assert(suite.suite_log_path.endswith('suite.log'))
-        m = re.match('.*\/(.*)\/suite.log', suite.suite_log_path)
+        m = re.match('.*\-(.*)\/suite.log', suite.suite_log_path)
         rand_part = m.groups()[0]
         assert(len(rand_part) == 32)
         assert(rand_part not in rand_part_set)
diff --git a/erp5/util/testnode/__init__.py b/erp5/util/testnode/__init__.py
index 907c3c3150fc392b2493e7eddb719f5a04c7c1e0..8b13c1716d240721282f218cbbc8c6363f197fe8 100644
--- a/erp5/util/testnode/__init__.py
+++ b/erp5/util/testnode/__init__.py
@@ -75,7 +75,7 @@ def main(*args):
               'git_binary','zip_binary','node_quantity','test_node_title',
               'ipv4_address','ipv6_address','test_suite_master_url',
               'slapgrid_partition_binary','slapgrid_software_binary',
-              'slapproxy_binary'):
+              'slapproxy_binary', 'httpd_ip', 'httpd_port'):
     CONFIG[key] = config.get('testnode',key)
 
   for key in ('slapos_directory', 'working_directory', 'test_suite_directory',
@@ -85,6 +85,8 @@ def main(*args):
       raise ValueError('Directory %r does not exists.' % d)
   CONFIG['master_url'] = 'http://%s:%s' % (CONFIG['proxy_host'],
         CONFIG['proxy_port'])
+  CONFIG['httpd_url'] = 'https://[%s]:%s' % (CONFIG['httpd_ip'],
+        CONFIG['httpd_port'])
 
   # generate vcs_repository_list
   if 'bot_environment' in config.sections():
diff --git a/erp5/util/testnode/testnode.py b/erp5/util/testnode/testnode.py
index 0932b91efabd699c704d7b4331dbabb4619974b3..7f342ebfae64ab17aadb4bfafd57cc6d4791d43d 100644
--- a/erp5/util/testnode/testnode.py
+++ b/erp5/util/testnode/testnode.py
@@ -110,20 +110,17 @@ class NodeTestSuite(SlapOSInstance):
         vcs_repository['repository_path'] = repository_path
 
   def createSuiteLog(self):
-    # /srv/slapgrid/slappartXX/srv/var/log/suite/az/mlksjfmlk234Sljssdflkj23KSdfslj/suite.log
-    if getattr(self, "log_directory", None) is not None:
-      if getattr(self, "suite_log_path", None) is None:
-        alphabets = string.digits + string.letters
-        rand_part = ''.join(random.choice(alphabets) for i in xrange(32))
-        suite_log_directory = os.path.join(self.log_directory,
-                                          'suite',
-                                           self.reference,
-                                           rand_part)
-        SlapOSControler.createFolders(suite_log_directory)
-        self.suite_log_path = os.path.join(suite_log_directory,
-                                           'suite.log')
-        self._initializeSuiteLog()
-    return self.getSuiteLogPath()
+    # /srv/slapgrid/slappartXX/srv/var/log/testnode/az-mlksjfmlk234Sljssdflkj23KSdfslj/suite.log
+    alphabets = string.digits + string.letters
+    rand_part = ''.join(random.choice(alphabets) for i in xrange(32))
+    random_suite_folder_id = '%s-%s' % (self.reference, rand_part)
+    suite_log_directory = os.path.join(self.log_directory,
+                                       random_suite_folder_id)
+    SlapOSControler.createFolders(suite_log_directory)
+    self.suite_log_path = os.path.join(suite_log_directory,
+                                       'suite.log')
+    self._initializeSuiteLog()
+    return self.getSuiteLogPath(), random_suite_folder_id
 
   def getSuiteLogPath(self):
     return getattr(self,"suite_log_path", None)
@@ -145,6 +142,7 @@ class NodeTestSuite(SlapOSInstance):
 class TestNode(object):
 
   def __init__(self, log, config):
+    self.testnode_log = log
     self.log = log
     self.config = config or {}
     self.process_manager = ProcessManager(log)
@@ -247,11 +245,15 @@ branch = %(branch)s
       Create a log dedicated for the test suite,
       and register the url to master node.
     """
-    log_file_name = node_test_suite.createSuiteLog()
+    log_file_name, folder_id = node_test_suite.createSuiteLog()
     if log_file_name is None and config.get('log_file'):
       log_file_name = config['log_file']
     # TODO make the path into url
-    test_result.reportStatus('registerSuiteLog', log_file_name, '')
+    test_result.reportStatus('LOG url', "%s/%s" % (self.config.get('httpd_url'),
+                             folder_id), '')
+    self.log("going to switch to log %r" % log_file_name)
+    log = node_test_suite.getSuiteLog()
+    self.process_manager.log = self.log = log
     return log_file_name
 
   def checkRevision(self, test_result, node_test_suite):
@@ -393,6 +395,7 @@ branch = %(branch)s
     try:
       while True:
         try:
+          self.log = self.process_manager.log = self.testnode_log
           self.cleanUp(None)
           remote_test_result_needs_cleanup = False
           begin = time.time()