diff --git a/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h b/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h
index 8fb956b33538961733c685eb10039809ab67fa8d..cda6f7792c52b9fdbc74afd08ed88a30d5e6fc76 100644
--- a/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h
+++ b/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h
@@ -85,7 +85,7 @@ class GCFDummyPort : public GCFPortInterface
     int cancelAllTimers ()
     {	return (0);	}
 
-	double timeLeft(long	timerID)
+	double timeLeft(long	/*timerID*/)
     {	return (0);	}
   
   private:
diff --git a/MAC/GCF/TM/include/GCF/TM/GCF_Task.h b/MAC/GCF/TM/include/GCF/TM/GCF_Task.h
index 58c3b790fc193a9d501afe9499cf5dc313fff2dd..f50f39f997fbb2d5cc8bd62c92b19691506dc473 100644
--- a/MAC/GCF/TM/include/GCF/TM/GCF_Task.h
+++ b/MAC/GCF/TM/include/GCF/TM/GCF_Task.h
@@ -68,7 +68,7 @@ class GCFTask : public GCFFsm
      * - lofar logger("mac.log_prop")
      * - parameterset(argv[0] + ".conf")
      */     
-    static void init (int argc, char** argv);
+    static void init (int argc, char** argv, const string&	logfile = "");
     
     /**
     * The static run method. This starts the event processing loop.
@@ -112,8 +112,7 @@ class GCFTask : public GCFFsm
     void setName (string& name) {_name = name;}
 
     /// returns the "define" of a signal ID as a string    
-    const char* evtstr(const GCFEvent& e) const;
-    string eventstr(const GCFEvent& e) const;
+    string evtstr(const GCFEvent& e) const;
 
   protected:
     /**
diff --git a/MAC/GCF/TM/src/GCF_Task.cc b/MAC/GCF/TM/src/GCF_Task.cc
index 0d2dd4a78fb306342f67f97d8a2ee6080700d468..aea43a683d185c03a991603ec50010d580dc8db9 100644
--- a/MAC/GCF/TM/src/GCF_Task.cc
+++ b/MAC/GCF/TM/src/GCF_Task.cc
@@ -72,7 +72,7 @@ GCFTask::~GCFTask()
 {
 }
 
-void GCFTask::init(int argc, char** argv)
+void GCFTask::init(int argc, char** argv, const string&	logfile)
 {
 	_argc = argc;
 	_argv = argv;
@@ -87,8 +87,15 @@ void GCFTask::init(int argc, char** argv)
 		// locator could not find it try defaultname
 		logPropFile = "mac.log_prop";
 	}
-	INIT_LOGGER(aCL.locate(logPropFile).c_str());   
-	LOG_DEBUG_STR ("Initialized logsystem with: " << aCL.locate(logPropFile));
+	if (logfile.empty()) {
+		INIT_LOGGER(aCL.locate(logPropFile).c_str());   
+		LOG_DEBUG_STR ("Initialized logsystem with: " << aCL.locate(logPropFile));
+	}
+	else {
+		INIT_VAR_LOGGER(aCL.locate(logPropFile).c_str(), logfile);   
+		LOG_DEBUG_STR ("Initialized logsystem with: " << aCL.locate(logPropFile) <<
+						"," << logfile);
+	}
 
 	// Read in the ParameterSet of the task (<task>.conf)
 	ParameterSet*	pParamSet = ACC::APS::globalParameterSet();
@@ -194,22 +201,10 @@ void GCFTask::registerProtocol(unsigned short protocolID,
   _protocols[protocolID] = signal_names;
 }
 
-const char* GCFTask::evtstr(const GCFEvent& e)  const
-{
-  static const char* unknown = "unknown signal";
-  const char* signame(0);
-  TProtocols::const_iterator iter = _protocols.find(F_EVT_PROTOCOL(e));
-  if (iter != _protocols.end())
-  {
-    signame = (iter->second)[F_EVT_SIGNAL(e)];
-  }
-  return (signame?signame:unknown);
-}
-
 //
-// eventstr(event&)
+// evtstr(event&)
 //
-string GCFTask::eventstr(const GCFEvent& e)  const
+string GCFTask::evtstr(const GCFEvent& e)  const
 {
 	TProtocols::const_iterator iter = _protocols.find(F_EVT_PROTOCOL(e));
 	if (iter != _protocols.end()) {
diff --git a/MAC/GCF/TM/src/Port/GCF_RawPort.cc b/MAC/GCF/TM/src/Port/GCF_RawPort.cc
index dbcaf656d7b0a4f3486671c30d8c2fdb1e8ad841..5ac56f8bc71ed71d3d8c0bab1917006eec4604af 100644
--- a/MAC/GCF/TM/src/Port/GCF_RawPort.cc
+++ b/MAC/GCF/TM/src/Port/GCF_RawPort.cc
@@ -105,7 +105,7 @@ GCFEvent::TResult GCFRawPort::dispatch(GCFEvent& event)
 						  (F_EVT_PROTOCOL(event) != F_PORT_PROTOCOL)) {
 		// Inform about the fact of an incomming message
 		LOG_DEBUG(formatString ("%s was received on port '%s' in task '%s'",
-								_pTask->evtstr(event), 
+								_pTask->evtstr(event).c_str(), 
 								getRealName().c_str(), 
 								_pTask->getName().c_str())); 
 	}
@@ -347,7 +347,7 @@ GCFEvent::TResult GCFRawPort::recvEvent()
 		ASSERT(getTask());
 		LOG_DEBUG(formatString (
 			"'%s' for port '%s' in task '%s' not handled or an error occured",
-			getTask()->evtstr(e), getRealName().c_str(),
+			getTask()->evtstr(e).c_str(), getRealName().c_str(),
 			getTask()->getName().c_str()));
 	}
 
diff --git a/MAC/GCF/TM/src/PortImpl/GCF_DevicePort.cc b/MAC/GCF/TM/src/PortImpl/GCF_DevicePort.cc
index 8ebd38adc167adbc539d5d63ca3e4aaac39e16ad..70e53d8044c848b892ca2dfbdfb01a599d83e723 100644
--- a/MAC/GCF/TM/src/PortImpl/GCF_DevicePort.cc
+++ b/MAC/GCF/TM/src/PortImpl/GCF_DevicePort.cc
@@ -163,7 +163,7 @@ ssize_t GCFDevicePort::send(GCFEvent& e)
 
   LOG_DEBUG(formatString (
       "Sending event '%s' for task '%s' on port '%s'",
-      getTask()->evtstr(e),
+      getTask()->evtstr(e).c_str(),
       getTask()->getName().c_str(), 
       getRealName().c_str()));
 
diff --git a/MAC/GCF/TM/src/PortImpl/GCF_ETHRawPort.cc b/MAC/GCF/TM/src/PortImpl/GCF_ETHRawPort.cc
index 75f123443fa92371e8247217bedde9ca2828d134..cadb2c8cef0abbc3278abe73b2b499d7055454ad 100644
--- a/MAC/GCF/TM/src/PortImpl/GCF_ETHRawPort.cc
+++ b/MAC/GCF/TM/src/PortImpl/GCF_ETHRawPort.cc
@@ -193,7 +193,7 @@ ssize_t GCFETHRawPort::send(GCFEvent& e)
 
   LOG_DEBUG(formatString (
       "Sending event '%s' for task '%s' on port '%s'",
-      getTask()->evtstr(e),
+      getTask()->evtstr(e).c_str(),
       getTask()->getName().c_str(), 
       getRealName().c_str()));
 
diff --git a/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc b/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc
index 7e6d5be5af4987c0f6250ab7ee26c3878aa3233c..8247b7900306cc2cd2309df7e85968ba62d2fe9e 100644
--- a/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc
+++ b/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc
@@ -316,7 +316,7 @@ ssize_t GCFTCPPort::send(GCFEvent& e)
 
 	LOG_TRACE_STAT(formatString (
 						"Sending event '%s' for task '%s' on port '%s'",
-						getTask()->evtstr(e), getTask()->getName().c_str(), 
+						getTask()->evtstr(e).c_str(), getTask()->getName().c_str(), 
 						getRealName().c_str()));
 
 	if ((written = _pSocket->send(buf, packsize)) != (ssize_t) packsize) {