diff --git a/erp5/util/testnode/SlapOSControler.py b/erp5/util/testnode/SlapOSControler.py
index 1bcae41e4d1c6b244175edc18187890106b96925..9ec438499417eb245f557835512fad870d71c97c 100644
--- a/erp5/util/testnode/SlapOSControler.py
+++ b/erp5/util/testnode/SlapOSControler.py
@@ -32,15 +32,21 @@ import xml_marshaller
 
 class SlapOSControler(object):
 
-  def __init__(self, config, log, process_group_pid_set=None):
+  def __init__(self, config, log, process_group_pid_set=None,
+      slapproxy_log=None):
     self.log = log
     self.config = config
     # By erasing everything, we make sure that we are able to "update"
     # existing profiles. This is quite dirty way to do updates...
     if os.path.exists(config['proxy_database']):
       os.unlink(config['proxy_database'])
+    kwargs = dict(close_fds=True, preexec_fn=os.setsid)
+    if slapproxy_log is not None:
+      slapproxy_log_fp = open(slapproxy_log, 'w')
+      kwargs['stdout'] = slapproxy_log_fp
+      kwargs['stderr'] = slapproxy_log_fp
     proxy = subprocess.Popen([config['slapproxy_binary'],
-      config['slapos_config']], close_fds=True, preexec_fn=os.setsid)
+      config['slapos_config']], **kwargs)
     process_group_pid_set.add(proxy.pid)
     # XXX: dirty, giving some time for proxy to being able to accept
     # connections