Index: extensions/_sample/sample.c
===================================================================
--- extensions/_sample/sample.c	(revision 740)
+++ extensions/_sample/sample.c	(revision 974)
@@ -87,5 +87,5 @@
 		fd_dict_dump_object(example_avp_avp);
 	}
-	TRACE_DEBUG(INFO, "'Example-AVP' created without error\n");
+	TRACE_DEBUG(INFO, "'Example-AVP' created without error");
 	
 	/* Call the c++ function */
Index: extensions/acl_wl/aw_conf.l
===================================================================
--- extensions/acl_wl/aw_conf.l	(revision 965)
+++ extensions/acl_wl/aw_conf.l	(revision 974)
@@ -96,5 +96,5 @@
 <*>[[:alnum:]]+		|	/* This rule is only useful to print a complete token in error messages */
 <*>.			{
-				TRACE_ERROR("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				TRACE_ERROR("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/acl_wl/aw_conf.y
===================================================================
--- extensions/acl_wl/aw_conf.y	(revision 961)
+++ extensions/acl_wl/aw_conf.y	(revision 974)
@@ -74,5 +74,5 @@
 	if (aw_confin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -102,9 +102,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/acl_wl/aw_tree.c
===================================================================
--- extensions/acl_wl/aw_tree.c	(revision 741)
+++ extensions/acl_wl/aw_tree.c	(revision 974)
@@ -116,7 +116,7 @@
 	
 #if 0
-	fd_log_debug("Parsed name %s as:\n", name);
+	fd_log_debug("Parsed name %s as:", name);
 	for (i=0; i<=l; i++)
-		fd_log_debug("  str[%d] len: %d, v:%.*s\n", i, result->label[i].len, result->label[i].len, result->label[i].str);
+		fd_log_debug("  str[%d] len: %d, v:%.*s", i, result->label[i].len, result->label[i].len, result->label[i].str);
 #endif /* 0 */
 	return 0;
@@ -179,8 +179,9 @@
 	for (li = sub->next; li != sub; li = li->next) {
 		struct tree_item * ti = (struct tree_item *)li;
-		fd_log_debug("%*s%s", indent * 2, "", ti->str?:"*");
+		char buf[1024];
+		snprintf(buf, sizeof(buf), "%*s%s", indent * 2, "", ti->str?:"*");
 		if (ti->leaf)
-			fd_log_debug(" (flag:%x)", ti->flags);
-		fd_log_debug("\n");
+			snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), " (flag:%x)", ti->flags);
+		fd_log_debug("%s", buf);
 		tree_dump(&ti->children, indent + 1);
 	}
@@ -190,7 +191,8 @@
 void aw_tree_dump(void)
 {
-	fd_log_debug("[acl_wl] tree dump:\n(root)\n");
+	fd_log_debug("[acl_wl] tree dump:");
+	fd_log_debug("(root)");
 	tree_dump(&tree_root, 1);
-	fd_log_debug("[acl_wl] end of dump\n");
+	fd_log_debug("[acl_wl] end of dump");
 }
 
@@ -208,5 +210,5 @@
 	CHECK_FCT_DO( parse_name(name, &sn), 
 		{ 
-			fd_log_debug("The name '%s' contains too many labels, try a generic (*) or recompile with bigger AW_TREE_MAXDEPTH value (cur: %d)\n", name, AW_TREE_MAXDEPTH); 
+			fd_log_debug("The name '%s' contains too many labels, try a generic (*) or recompile with bigger AW_TREE_MAXDEPTH value (cur: %d)", name, AW_TREE_MAXDEPTH); 
 			return EINVAL; 
 		} );
@@ -229,5 +231,5 @@
 		ti = (struct tree_item *)(senti->next);
 		if (ti->str == NULL) {
-			fd_log_debug("[acl_wl] Warning: entry '%s' is superseeded by a generic entry at label %d, ignoring.\n", name, lbl + 1);
+			fd_log_debug("[acl_wl] Warning: entry '%s' is superseeded by a generic entry at label %d, ignoring.", name, lbl + 1);
 			return 0;
 		}
@@ -275,5 +277,5 @@
 	if (sn.label[0].str[0] == '*') {
 		if (!FD_IS_LIST_EMPTY(senti)) {
-			fd_log_debug("[acl_wl] Warning: entry '%s' overwrites previous more detailed entries, these are deleted.\n", name);
+			fd_log_debug("[acl_wl] Warning: entry '%s' overwrites previous more detailed entries, these are deleted.", name);
 			delete_tree(senti);
 		}
@@ -286,5 +288,5 @@
 			ti = (struct tree_item *)(senti->next);
 			if (ti->str == NULL) {
-				fd_log_debug("[acl_wl] Warning: entry '%s' is superseeded by a generic entry at label 1, ignoring.\n", name);
+				fd_log_debug("[acl_wl] Warning: entry '%s' is superseeded by a generic entry at label 1, ignoring.", name);
 				return 0;
 			}
@@ -310,5 +312,5 @@
 				/* We already had this label */
 				if (ti->leaf) {
-					fd_log_debug("[acl_wl] Warning: entry '%s' is duplicated, merging the flags.\n", name);
+					fd_log_debug("[acl_wl] Warning: entry '%s' is duplicated, merging the flags.", name);
 					ti->flags |= flags;
 					return 0;
Index: extensions/app_acct/acct_conf.l
===================================================================
--- extensions/app_acct/acct_conf.l	(revision 741)
+++ extensions/app_acct/acct_conf.l	(revision 974)
@@ -81,5 +81,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -93,5 +93,5 @@
 				yylval->string = strdup(yytext+1);
 				if (!yylval->string) {
-					fd_log_debug("Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to copy the string '%s': %s", yytext, strerror(errno));
 					TRACE_DEBUG(INFO, "strdup failed");
 					return LEX_ERROR; /* trig an error in yacc parser */
@@ -137,5 +137,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]"*=>;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/app_acct/acct_conf.y
===================================================================
--- extensions/app_acct/acct_conf.y	(revision 808)
+++ extensions/app_acct/acct_conf.y	(revision 974)
@@ -83,10 +83,10 @@
 	
 	if ( ! acct_config->conninfo) {
-		fd_log_debug("[app_acct] ERROR: 'ConnInfo' is missing in file '%s'.\n"
+		fd_log_debug("[app_acct] ERROR: 'ConnInfo' is missing in file '%s'."
 			" You can specify 'ConnInfo=\"\";' to use default parameters.\n", conffile);
 		return EINVAL;
 	}
 	if ( ! acct_config->tablename) {
-		fd_log_debug("[app_acct] ERROR: 'Table' value is missing in file '%s'.\n", conffile);
+		fd_log_debug("[app_acct] ERROR: 'Table' value is missing in file '%s'.", conffile);
 		return EINVAL;
 	}
@@ -97,11 +97,11 @@
 	struct fd_list * li;
 		
-	fd_log_debug("[app_acct] Configuration dump:\n");
-	fd_log_debug(" Database:\n");
-	fd_log_debug("   ConnInfo ...... : '%s'\n", acct_config->conninfo ?: "<null>");
-	fd_log_debug("   Table name .... : '%s'\n", acct_config->tablename ?: "<null>");
-	fd_log_debug("   Timestamp field : '%s'\n", acct_config->tsfield ?: "<null>");
-	fd_log_debug("   Server name fld : '%s'\n", acct_config->srvnfield ?: "<null>");
-	fd_log_debug(" AVPs that will be saved to the database:\n");
+	fd_log_debug("[app_acct] Configuration dump:");
+	fd_log_debug(" Database:");
+	fd_log_debug("   ConnInfo ...... : '%s'", acct_config->conninfo ?: "<null>");
+	fd_log_debug("   Table name .... : '%s'", acct_config->tablename ?: "<null>");
+	fd_log_debug("   Timestamp field : '%s'", acct_config->tsfield ?: "<null>");
+	fd_log_debug("   Server name fld : '%s'", acct_config->srvnfield ?: "<null>");
+	fd_log_debug(" AVPs that will be saved to the database:");
 	for (li = acct_config->avps.next; li != &acct_config->avps; li = li->next) {
 		struct acct_conf_avp * a = (struct acct_conf_avp *)li;
@@ -112,7 +112,7 @@
 			fd_log_debug("field '%s' ", a->field?:a->avpname);
 		}
-		fd_log_debug("as ::%s\n", diam2db_types_mapping[a->avptype]);
-	}
-	fd_log_debug("[app_acct] Complete.\n");
+		fd_log_debug("as ::%s", diam2db_types_mapping[a->avptype]);
+	}
+	fd_log_debug("[app_acct] Complete.");
 	return 0;
 }
@@ -158,5 +158,5 @@
 	if (acct_confin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		return ret;
 	}
@@ -180,9 +180,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/app_acct/acct_db.c
===================================================================
--- extensions/app_acct/acct_db.c	(revision 871)
+++ extensions/app_acct/acct_db.c	(revision 974)
@@ -79,5 +79,5 @@
 	
 	CHECK_PARAMS_DO( PQisthreadsafe() == 1, {
-		fd_log_debug("You PostGreSQL installation is not thread-safe!\n");
+		fd_log_debug("You PostGreSQL installation is not thread-safe!");
 		return EINVAL;
 	} );			
@@ -88,10 +88,10 @@
 	/* Check to see that the backend connection was successfully made */
 	if (PQstatus(conn) != CONNECTION_OK) {
-		fd_log_debug("Connection to database failed: %s\n", PQerrorMessage(conn));
+		fd_log_debug("Connection to database failed: %s", PQerrorMessage(conn));
 		acct_db_free();
 		return EINVAL;
 	}
 	if (PQprotocolVersion(conn) < 3) {
-		fd_log_debug("Database protocol version is too old, version 3 is required for prepared statements.\n");
+		fd_log_debug("Database protocol version is too old, version 3 is required for prepared statements.");
 		acct_db_free();
 		return EINVAL;
@@ -194,5 +194,5 @@
 	ADD_EXTEND(");");
 	
-	TRACE_DEBUG(FULL, "Preparing the following SQL statement:\n%s\n", sql);
+	TRACE_DEBUG(FULL, "Preparing the following SQL statement: '%s'", sql);
 	res = PQprepare(conn, stmt, sql, emptyrecords.nball, NULL);
 	if (PQresultStatus(res) != PGRES_COMMAND_OK) {
Index: extensions/app_acct/acct_records.c
===================================================================
--- extensions/app_acct/acct_records.c	(revision 741)
+++ extensions/app_acct/acct_records.c	(revision 974)
@@ -126,5 +126,5 @@
 	/* Check at least one AVP was mapped */
 	if (records->nball == records->nbunmap) {
-		fd_log_debug("The received ACR does not contain any AVP from the configuration file.\n"
+		fd_log_debug("The received ACR does not contain any AVP from the configuration file."
 				"This is an invalid situation. Please fix your configuration file.\n"
 				"One way to ensure this does not happen is to include Session-Id in the database.\n");
@@ -137,5 +137,5 @@
 		struct acct_record_item * r = (struct acct_record_item *)(li->o);
 		if (r->param->required && (r->index <= 1)) {
-			fd_log_debug("The received ACR does not contain the required AVP '%s'.\n", r->param->avpname);
+			fd_log_debug("The received ACR does not contain the required AVP '%s'.", r->param->avpname);
 			acct_rec_empty(records);
 			return EINVAL;
Index: extensions/app_diameap/diameap.y
===================================================================
--- extensions/app_diameap/diameap.y	(revision 565)
+++ extensions/app_diameap/diameap.y	(revision 974)
@@ -124,5 +124,5 @@
 		if (fl == NULL) {
 			int ret = errno;
-			TRACE_DEBUG(INFO, "Unable to open %s plugin file %s for reading: %s\n", $3, infile, strerror(ret));
+			TRACE_DEBUG(INFO, "Unable to open %s plugin file %s for reading: %s", $3, infile, strerror(ret));
 			yyerror (&yylloc, config, "Error adding EAP Plugin"); 
 			YYERROR;
Index: extensions/app_diameap/diameap_eappacket.c
===================================================================
--- extensions/app_diameap/diameap_eappacket.c	(revision 425)
+++ extensions/app_diameap/diameap_eappacket.c	(revision 974)
@@ -186,5 +186,5 @@
 		return;
 
-	fd_log_debug("------------- Dump EAP Packet-------------\n");
+	fd_log_debug("------------- Dump EAP Packet-------------");
 	int i;
 	fd_log_debug("\t -Code       : ");
@@ -194,43 +194,44 @@
 	{
 	case 1:
-		fd_log_debug("Request\n");
+		fd_log_debug("Request");
 		break;
 	case 2:
-		fd_log_debug("Response\n");
+		fd_log_debug("Response");
 		break;
 	case 3:
-		fd_log_debug("Success\n");
+		fd_log_debug("Success");
 		break;
 	case 4:
-		fd_log_debug("Failure\n");
+		fd_log_debug("Failure");
 		break;
 	default:
-		fd_log_debug("Error (EAP Code value [%d] not allowed)\n",code);
+		fd_log_debug("Error (EAP Code value [%d] not allowed)",code);
 		break;
 	}
 	u8 id;
 	CHECK_FCT_DO(diameap_eap_get_identifier(eappacket,&id),return);
-	fd_log_debug("\t -Identifier : %x \n", id);
+	fd_log_debug("\t -Identifier : %x ", id);
 	u16 length;
 	CHECK_FCT_DO(diameap_eap_get_length(eappacket,&length),return);
-	fd_log_debug("\t -Length     : %d \n", (unsigned int)length);
+	fd_log_debug("\t -Length     : %d ", (unsigned int)length);
 	if (eappacket.length > 4)
 	{
 		eap_type type;
 		CHECK_FCT_DO(diameap_eap_get_type(eappacket,&type),return);
-		fd_log_debug("\t -Type       : %d \n", type);
+		fd_log_debug("\t -Type       : %d ", type);
 	}
 	if (eappacket.length > 5)
 	{
-		fd_log_debug("\t -Data       : ");
+		char buf[1024];
+		snprintf(buf, sizeof(buf), "\t -Data       : ");
 		for (i = 5; i < eappacket.length && i < 30; i++)
 		{
-			fd_log_debug("%02x ", G8(eappacket.data + i));
+			snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%02x ", G8(eappacket.data + i));
 		}
 		if(i+1<eappacket.length)
-			fd_log_debug("[...] (len=%d)",(unsigned int) length);
-		fd_log_debug("\n");
-	}
-	fd_log_debug("-------------End Dump EAP Packet-------------\n");
+			snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "[...] (len=%d)",(unsigned int) length);
+		fd_log_debug("%s", buf);
+	}
+	fd_log_debug("-------------End Dump EAP Packet-------------");
 }
 
Index: extensions/app_diameap/diameap_init.c
===================================================================
--- extensions/app_diameap/diameap_init.c	(revision 565)
+++ extensions/app_diameap/diameap_init.c	(revision 974)
@@ -368,27 +368,25 @@
 		return;
 
-	fd_log_debug(
-			"-------- DiamEAP extension : Configuration parameters (Dump) -------------\n");
-	fd_log_debug("\t-Configuration file.....: %s\n", diameap_config->conffile);
-	fd_log_debug("\t-EAP Application Id.....: %u\n",
+	fd_log_debug("-------- DiamEAP extension : Configuration parameters (Dump) -------------");
+	fd_log_debug("\t-Configuration file.....: %s", diameap_config->conffile);
+	fd_log_debug("\t-EAP Application Id.....: %u",
 			diameap_config->application_id);
-	fd_log_debug("\t-EAP Application Command: %u\n",
+	fd_log_debug("\t-EAP Application Command: %u",
 			diameap_config->command_code);
-	fd_log_debug("\t-EAP Application Vendor.: %u\n", diameap_config->vendor_id);
-	fd_log_debug("\t-Max invalid EAP packets: %u\n", diameap_config->max_invalid_eap_packet);
-	fd_log_debug("\t-Multi-Round Timeout....: %u\n", diameap_config->multi_round_time_out);
+	fd_log_debug("\t-EAP Application Vendor.: %u", diameap_config->vendor_id);
+	fd_log_debug("\t-Max invalid EAP packets: %u", diameap_config->max_invalid_eap_packet);
+	fd_log_debug("\t-Multi-Round Timeout....: %u", diameap_config->multi_round_time_out);
 	if (diameap_config->db.user)
 	{
-		fd_log_debug("\t-MySQL Database Params..: \n\t\tUser .......:%s\n",
-				diameap_config->db.user);
-		fd_log_debug("\t\tServer .....:%s\n", diameap_config->db.server);
-		fd_log_debug("\t\tDatabase....:%s\n", diameap_config->db.database);
-	}
-
-	fd_log_debug("\t-EAP Method Plugins.....: \n");
+		fd_log_debug("\t-MySQL Database Params..:");
+		fd_log_debug("\t\tUser .......:%s", diameap_config->db.user);
+		fd_log_debug("\t\tServer .....:%s", diameap_config->db.server);
+		fd_log_debug("\t\tDatabase....:%s", diameap_config->db.database);
+	}
+
+	fd_log_debug("\t-EAP Method Plugins.....: ");
 	diameap_plugin_dump();
 
-	fd_log_debug(
-			"-------- DiamEAP extension : Configuration parameters (End) ---------------\n");
+	fd_log_debug("-------- DiamEAP extension : Configuration parameters (End) ---------------");
 }
 
Index: extensions/app_diameap/diameap_plugins.c
===================================================================
--- extensions/app_diameap/diameap_plugins.c	(revision 610)
+++ extensions/app_diameap/diameap_plugins.c	(revision 974)
@@ -76,5 +76,5 @@
 	{
 		struct plugin * plugin = (struct plugin *) pl;
-		fd_log_debug("\t\t - %s plugin \t [Type: %i, Vendor: %i]  %sloaded\n", plugin->methodname,
+		fd_log_debug("\t\t - %s plugin \t [Type: %i, Vendor: %i]  %sloaded", plugin->methodname,
 				plugin->methodtype,plugin->vendor, plugin->handler ? "" : "not ");
 	}
Index: extensions/app_radgw/radius.c
===================================================================
--- extensions/app_radgw/radius.c	(revision 972)
+++ extensions/app_radgw/radius.c	(revision 974)
@@ -320,9 +320,9 @@
 	auth =  &(msg->radius.hdr->authenticator[0]);
 	
-	fd_log_debug("------ RADIUS msg dump -------\n");
-	fd_log_debug(" id  : 0x%02hhx, code : %hhd (%s), length : %d\n", msg->radius.hdr->identifier, msg->radius.hdr->code, rgw_msg_code_str(msg->radius.hdr->code), ntohs(msg->radius.hdr->length));
-	fd_log_debug(" auth: %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx\n",
+	fd_log_debug("------ RADIUS msg dump -------");
+	fd_log_debug(" id  : 0x%02hhx, code : %hhd (%s), length : %d", msg->radius.hdr->identifier, msg->radius.hdr->code, rgw_msg_code_str(msg->radius.hdr->code), ntohs(msg->radius.hdr->length));
+	fd_log_debug(" auth: %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx",
 			auth[0], auth[1], auth[2], auth[3], auth[4], auth[5], auth[6], auth[7]);
-	fd_log_debug("       %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx\n",
+	fd_log_debug("       %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx",
 			auth[8],  auth[9],  auth[10], auth[11], auth[12], auth[13], auth[14], auth[15]);
 	for (i = 0; i < msg->radius.attr_used; i++) {
@@ -332,5 +332,5 @@
 	}
 	if (has_meta && msg->ps_nb) {
-		fd_log_debug("---- hidden attributes:\n");
+		fd_log_debug("---- hidden attributes:");
 		for (i = msg->ps_first; i < msg->ps_first + msg->ps_nb; i++) {
 			struct radius_attr_hdr *attr = (struct radius_attr_hdr *)(msg->radius.buf + msg->radius.attr_pos[i]);
@@ -339,5 +339,5 @@
 		}
 	}
-	fd_log_debug("-----------------------------\n");
+	fd_log_debug("-----------------------------");
 }
 
@@ -527,10 +527,10 @@
 	msg_len = ntohs(hdr->length);
 	if (msg_len < sizeof(*hdr) || msg_len > len) {
-		TRACE_DEBUG(INFO, "Invalid RADIUS message length\n");
+		TRACE_DEBUG(INFO, "Invalid RADIUS message length");
 		return EINVAL;
 	}
 
 	if (msg_len < len) {
-		TRACE_DEBUG(INFO, "Ignored %lu extra bytes after RADIUS message\n",
+		TRACE_DEBUG(INFO, "Ignored %lu extra bytes after RADIUS message",
 		       (unsigned long) len - msg_len);
 	}
Index: extensions/app_radgw/rgw_clients.c
===================================================================
--- extensions/app_radgw/rgw_clients.c	(revision 965)
+++ extensions/app_radgw/rgw_clients.c	(revision 974)
@@ -983,9 +983,9 @@
 	
 	if (!FD_IS_LIST_EMPTY(&cli_ip))
-		fd_log_debug(" RADIUS IP clients list:\n");
+		fd_log_debug(" RADIUS IP clients list:");
 	dump_cli_list(&cli_ip);
 		
 	if (!FD_IS_LIST_EMPTY(&cli_ip6))
-		fd_log_debug(" RADIUS IPv6 clients list:\n");
+		fd_log_debug(" RADIUS IPv6 clients list:");
 	dump_cli_list(&cli_ip6);
 		
Index: extensions/app_radgw/rgw_conf.l
===================================================================
--- extensions/app_radgw/rgw_conf.l	(revision 741)
+++ extensions/app_radgw/rgw_conf.l	(revision 974)
@@ -89,5 +89,5 @@
 				yylval->string = strdup(yytext+1);
 				if (yylval->string == NULL) {
-					fd_log_debug("Unable to allocate memory: %s\n", strerror(errno));
+					fd_log_debug("Unable to allocate memory: %s", strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 				}
@@ -111,5 +111,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -133,5 +133,5 @@
 				work = strdup(yytext);
 				if ( work == NULL ) {
-					fd_log_debug("Unable to allocate memory: %s\n", strerror(errno));
+					fd_log_debug("Unable to allocate memory: %s", strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 				}
@@ -141,5 +141,5 @@
 					port++;
 					if (sscanf(port, "%hu]", &p) != 1) {
-						fd_log_debug("'%s' is not a valid port: %s\n", port, strerror(errno));
+						fd_log_debug("'%s' is not a valid port: %s", port, strerror(errno));
 						free(work);
 						return LEX_ERROR; /* trig an error in yacc parser */
@@ -153,5 +153,5 @@
 					sin6 = malloc(sizeof(struct sockaddr_in6));
 					if (sin6 == NULL) {
-						fd_log_debug("Unable to allocate memory: %s\n", strerror(errno));
+						fd_log_debug("Unable to allocate memory: %s", strerror(errno));
 						free(work);
 						return LEX_ERROR; /* trig an error in yacc parser */
@@ -161,5 +161,5 @@
 					sin6->sin6_family = AF_INET6;
 					if (inet_pton(AF_INET6, work, &sin6->sin6_addr) != 1) {
-						fd_log_debug("'%s' is not a valid IPv6 address: %s\n", work, strerror(errno));
+						fd_log_debug("'%s' is not a valid IPv6 address: %s", work, strerror(errno));
 						free(work);
 						free(sin6);
@@ -173,5 +173,5 @@
 					sin = malloc(sizeof(struct sockaddr_in));
 					if (sin == NULL) {
-						fd_log_debug("Unable to allocate memory: %s\n", strerror(errno));
+						fd_log_debug("Unable to allocate memory: %s", strerror(errno));
 						free(work);
 						return LEX_ERROR; /* trig an error in yacc parser */
@@ -181,5 +181,5 @@
 					sin->sin_family = AF_INET;
 					if (inet_pton(AF_INET, work, &sin->sin_addr) != 1) {
-						fd_log_debug("'%s' is not a valid IP address: %s\n", work, strerror(errno));
+						fd_log_debug("'%s' is not a valid IP address: %s", work, strerror(errno));
 						free(work);
 						free(sin);
@@ -213,5 +213,5 @@
 					if (ret != 1) {
 						/* No matching: an error occurred */
-						fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+						fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 						return LEX_ERROR; /* trig an error in yacc parser */
 						/* Maybe we could REJECT instead of failing here? */
@@ -227,5 +227,5 @@
 					sin = malloc(sizeof(struct sockaddr_in));
 					if (sin == NULL) {
-						fd_log_debug("Unable to allocate memory: %s\n", strerror(errno));
+						fd_log_debug("Unable to allocate memory: %s", strerror(errno));
 						return LEX_ERROR; /* trig an error in yacc parser */
 					}
@@ -234,5 +234,5 @@
 					sin->sin_family = AF_INET;
 					if (inet_pton(AF_INET, yytext, &sin->sin_addr) != 1) {
-						fd_log_debug("'%s' is not a valid IP address: %s\n", yytext, strerror(errno));
+						fd_log_debug("'%s' is not a valid IP address: %s", yytext, strerror(errno));
 						free(sin);
 						return LEX_ERROR; /* trig an error in yacc parser */
@@ -247,5 +247,5 @@
 					sin6 = malloc(sizeof(struct sockaddr_in6));
 					if (sin6 == NULL) {
-						fd_log_debug("Unable to allocate memory: %s\n", strerror(errno));
+						fd_log_debug("Unable to allocate memory: %s", strerror(errno));
 						return LEX_ERROR; /* trig an error in yacc parser */
 					}
@@ -254,5 +254,5 @@
 					sin6->sin6_family = AF_INET6;
 					if (inet_pton(AF_INET6, yytext, &sin6->sin6_addr) != 1) {
-						fd_log_debug("'%s' is not a valid IPv6 address: %s\n", yytext, strerror(errno));
+						fd_log_debug("'%s' is not a valid IPv6 address: %s", yytext, strerror(errno));
 						free(sin6);
 						return LEX_ERROR; /* trig an error in yacc parser */
@@ -271,5 +271,5 @@
 	/* Unrecognized character */
 <*>.			{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/app_radgw/rgw_conf.y
===================================================================
--- extensions/app_radgw/rgw_conf.y	(revision 741)
+++ extensions/app_radgw/rgw_conf.y	(revision 974)
@@ -69,5 +69,5 @@
 	if (rgw_confin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		return ret;
 	}
@@ -91,9 +91,9 @@
 {
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
@@ -111,5 +111,5 @@
 		rez = realloc(buf, buf_rsz);
 		if (rez == NULL) {
-			fd_log_debug("Error on memory allocation: %s\n", strerror(errno));
+			fd_log_debug("Error on memory allocation: %s", strerror(errno));
 			return 0;
 		}
@@ -198,5 +198,5 @@
 				if (fd == NULL) {
 					int ret = errno;
-					TRACE_DEBUG(INFO, "Unable to open file %s for reading: %s\n", fname, strerror(ret));
+					TRACE_DEBUG(INFO, "Unable to open file %s for reading: %s", fname, strerror(ret));
 					yyerror (&yylloc, conffile, "Error adding plugin"); 
 					YYERROR;
Index: extensions/app_radgw/rgw_plugins.c
===================================================================
--- extensions/app_radgw/rgw_plugins.c	(revision 741)
+++ extensions/app_radgw/rgw_plugins.c	(revision 974)
@@ -188,5 +188,5 @@
 	if (new->dlo == NULL) {
 		/* An error occured */
-		fd_log_debug("Loading of plugin '%s' failed:\n %s\n", plgfile, dlerror());
+		fd_log_debug("Loading of plugin '%s' failed: %s", plgfile, dlerror());
 		goto error;
 	}
@@ -196,5 +196,5 @@
 	if (new->descriptor == NULL) {
 		/* An error occured */
-		fd_log_debug("Unable to resolve 'rgwp_descriptor' in plugin '%s':\n %s\n", plgfile, dlerror());
+		fd_log_debug("Unable to resolve 'rgwp_descriptor' in plugin '%s': %s", plgfile, dlerror());
 		goto error;
 	}
@@ -206,5 +206,5 @@
 		CHECK_FCT_DO( (*(new->descriptor->rgwp_conf_parse))(conffile, &new->cs), 
 			{
-				fd_log_debug("An error occurred while parsing configuration file '%s' in plugin '%s', aborting...\n", conffile, plgfile);
+				fd_log_debug("An error occurred while parsing configuration file '%s' in plugin '%s', aborting...", conffile, plgfile);
 				goto error;
 			} );
@@ -266,14 +266,14 @@
 	
 	if ( ! FD_IS_LIST_EMPTY( &plg_list ) )
-		fd_log_debug("[app_radgw]  --- List of registered plugins:\n");
+		fd_log_debug("[app_radgw]  --- List of registered plugins:");
 	for (ptr = plg_list.next; ptr != &plg_list; ptr = ptr->next) {
-		
+		char buf[1024];
 		plg = (struct plg_descr *)ptr;
 		
-		fd_log_debug("  %-25s ( %p ) - types: %s%s, codes: ", 
-				plg->descriptor->rgwp_name, 
-				plg->cs,
-				plg->type & RGW_PLG_TYPE_AUTH ? "Au" : "  ",
-				plg->type & RGW_PLG_TYPE_ACCT ? "Ac" : "  ");
+		snprintf(buf, sizeof(buf), "  %-25s ( %p ) - types: %s%s, codes: ", 
+			 plg->descriptor->rgwp_name, 
+			 plg->cs,
+			 plg->type & RGW_PLG_TYPE_AUTH ? "Au" : "  ",
+			 plg->type & RGW_PLG_TYPE_ACCT ? "Ac" : "  ");
 		
 		if (plg->cc) {
@@ -281,9 +281,9 @@
 			
 			for (i = 0; i < plg->cc_len; i++) {
-				fd_log_debug("%02hhx ", plg->cc[i]);
+				snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%02hhx ", plg->cc[i]);
 			}
-			fd_log_debug("\n");
+			fd_log_debug("%s", buf);
 		} else {
-			fd_log_debug("*\n");
+			fd_log_debug("%s*", buf);
 		}
 	}
@@ -297,22 +297,22 @@
 	CHECK_POSIX_DO( pthread_rwlock_rdlock(&plg_lock), );
 	if ( !FD_IS_LIST_EMPTY( &plg_accel_auth ) || !FD_IS_LIST_EMPTY( &plg_accel_acct ))
-		fd_log_debug("  --- Accelerators:\n");
+		fd_log_debug("  --- Accelerators:");
 	
 	for (ptraccel = plg_accel_auth.next; ptraccel != &plg_accel_auth; ptraccel = ptraccel->next) {
 		struct plg_accel * accel = (struct plg_accel *)ptraccel;
-		fd_log_debug("  auth, code %02hhu:\n", accel->ccode);
+		fd_log_debug("  auth, code %02hhu:", accel->ccode);
 
 		for (ptr = accel->plugins.next; ptr != &accel->plugins; ptr = ptr->next) {
 			struct plg_accel_item * item = (struct plg_accel_item *)ptr;
-			fd_log_debug("     %-15s (%p)\n", item->plg->descriptor->rgwp_name, item->plg->cs);
+			fd_log_debug("     %-15s (%p)", item->plg->descriptor->rgwp_name, item->plg->cs);
 		}
 	}
 	for (ptraccel = plg_accel_acct.next; ptraccel != &plg_accel_acct; ptraccel = ptraccel->next) {
 		struct plg_accel * accel = (struct plg_accel *)ptraccel;
-		fd_log_debug("  acct, code %02hhu:\n", accel->ccode);
+		fd_log_debug("  acct, code %02hhu:", accel->ccode);
 
 		for (ptr = accel->plugins.next; ptr != &accel->plugins; ptr = ptr->next) {
 			struct plg_accel_item * item = (struct plg_accel_item *)ptr;
-			fd_log_debug("     %-15s (%p)\n", item->plg->descriptor->rgwp_name, item->plg->cs);
+			fd_log_debug("     %-15s (%p)", item->plg->descriptor->rgwp_name, item->plg->cs);
 		}
 	}
@@ -380,5 +380,5 @@
 	if (ret > 0) {
 		/* Critical error, log and exit */
-		TRACE_DEBUG(NONE, "An error occurred while handling a RADIUS message from '%s': %s\n", rgw_clients_id(cli), strerror(ret));
+		TRACE_DEBUG(NONE, "An error occurred while handling a RADIUS message from '%s': %s", rgw_clients_id(cli), strerror(ret));
 		return ret;
 	}
@@ -436,5 +436,5 @@
 	if (ret > 0) {
 		/* Critical error, log and exit */
-		fd_log_debug("[app_radgw] An error occurred while handling a DIAMETER answer to a converted RADIUS request, turn on DEBUG for details: %s\n", strerror(ret));
+		fd_log_debug("[app_radgw] An error occurred while handling a DIAMETER answer to a converted RADIUS request, turn on DEBUG for details: %s", strerror(ret));
 		return ret;
 	}
Index: extensions/app_radgw/rgw_servers.c
===================================================================
--- extensions/app_radgw/rgw_servers.c	(revision 965)
+++ extensions/app_radgw/rgw_servers.c	(revision 974)
@@ -52,23 +52,23 @@
 		return;
 	
-	fd_log_debug(" auth server:\n");
-	fd_log_debug("    disabled..... : %s\n", rgw_servers.auth_serv.disabled ? "TRUE":"false");
-	fd_log_debug("    IP disabled.. : %s\n", rgw_servers.auth_serv.ip_disabled ? "TRUE":"false");
-	fd_log_debug("    IPv6 disabled : %s\n", rgw_servers.auth_serv.ip6_disabled ? "TRUE":"false");
-	fd_log_debug("    port......... : %hu\n", ntohs(rgw_servers.auth_serv.port));
+	fd_log_debug(" auth server:");
+	fd_log_debug("    disabled..... : %s", rgw_servers.auth_serv.disabled ? "TRUE":"false");
+	fd_log_debug("    IP disabled.. : %s", rgw_servers.auth_serv.ip_disabled ? "TRUE":"false");
+	fd_log_debug("    IPv6 disabled : %s", rgw_servers.auth_serv.ip6_disabled ? "TRUE":"false");
+	fd_log_debug("    port......... : %hu", ntohs(rgw_servers.auth_serv.port));
 	inet_ntop(AF_INET, &rgw_servers.auth_serv.ip_endpoint,ipstr,sizeof(ipstr));
-	fd_log_debug("    IP bind...... : %s\n", ipstr);
+	fd_log_debug("    IP bind...... : %s", ipstr);
 	inet_ntop(AF_INET6, &rgw_servers.auth_serv.ip6_endpoint,ipstr,sizeof(ipstr));
-	fd_log_debug("    IPv6 bind.... : %s\n", ipstr);
-
-	fd_log_debug(" acct server:\n");
-	fd_log_debug("    disabled..... : %s\n", rgw_servers.acct_serv.disabled ? "TRUE":"false");
-	fd_log_debug("    IP disabled.. : %s\n", rgw_servers.acct_serv.ip_disabled ? "TRUE":"false");
-	fd_log_debug("    IPv6 disabled : %s\n", rgw_servers.acct_serv.ip6_disabled ? "TRUE":"false");
-	fd_log_debug("    port......... : %hu\n", ntohs(rgw_servers.acct_serv.port));
+	fd_log_debug("    IPv6 bind.... : %s", ipstr);
+
+	fd_log_debug(" acct server:");
+	fd_log_debug("    disabled..... : %s", rgw_servers.acct_serv.disabled ? "TRUE":"false");
+	fd_log_debug("    IP disabled.. : %s", rgw_servers.acct_serv.ip_disabled ? "TRUE":"false");
+	fd_log_debug("    IPv6 disabled : %s", rgw_servers.acct_serv.ip6_disabled ? "TRUE":"false");
+	fd_log_debug("    port......... : %hu", ntohs(rgw_servers.acct_serv.port));
 	inet_ntop(AF_INET, &rgw_servers.acct_serv.ip_endpoint,ipstr,sizeof(ipstr));
-	fd_log_debug("    IP bind...... : %s\n", ipstr);
+	fd_log_debug("    IP bind...... : %s", ipstr);
 	inet_ntop(AF_INET6, &rgw_servers.acct_serv.ip6_endpoint,ipstr,sizeof(ipstr));
-	fd_log_debug("    IPv6 bind.... : %s\n", ipstr);
+	fd_log_debug("    IPv6 bind.... : %s", ipstr);
 
 }
Index: extensions/app_radgw/rgw_worker.c
===================================================================
--- extensions/app_radgw/rgw_worker.c	(revision 767)
+++ extensions/app_radgw/rgw_worker.c	(revision 974)
@@ -163,5 +163,5 @@
 		/* Check the created Diameter message -- it will be invalid if no callback has handled the RADIUS message */
 		if ((diam_msg == NULL) || ( fd_msg_parse_rules(diam_msg, fd_g_config->cnf_dict, NULL) ) ) {
-			fd_log_debug("[radgw] No or invalid Diameter message was generated after processing the RADIUS command %hhd (%s).\n"
+			fd_log_debug("[radgw] No or invalid Diameter message was generated after processing the RADIUS command %hhd (%s)."
 					" It may indicate a gateway configuration problem, or implementation issue in a plugin.\n",
 					msg->radius.hdr->code, rgw_msg_code_str(msg->radius.hdr->code));
@@ -174,5 +174,5 @@
 			struct radius_attr_hdr *attr = (struct radius_attr_hdr *)(msg->radius.buf + msg->radius.attr_pos[a]);
 			pb++;
-			fd_log_debug("[radgw] No plugin available to handle attribute %hhd (%s) in command %hhd (%s)! Translation aborted.\n",
+			fd_log_debug("[radgw] No plugin available to handle attribute %hhd (%s) in command %hhd (%s)! Translation aborted.",
 					attr->type, rgw_msg_attrtype_str(attr->type),
 					msg->radius.hdr->code, rgw_msg_code_str(msg->radius.hdr->code));
@@ -193,5 +193,5 @@
 			rgw_clients_dispose(&cli);
 			
-			TRACE_DEBUG(INFO, "%d problem(s) occurred while translating a RADIUS message, data discarded.\n", pb);
+			TRACE_DEBUG(INFO, "%d problem(s) occurred while translating a RADIUS message, data discarded.", pb);
 			continue;
 		}
@@ -207,5 +207,5 @@
 			{
 				/* If an error occurs, log and destroy the data */
-				fd_log_debug("An error occurred while sending Diameter message, please turn Debug on for detail.\n");
+				fd_log_debug("An error occurred while sending Diameter message, please turn Debug on for detail.");
 				if (session) {
 					CHECK_FCT_DO( fd_sess_destroy(&session), );
Index: extensions/app_radgw/rgwx_acct.c
===================================================================
--- extensions/app_radgw/rgwx_acct.c	(revision 965)
+++ extensions/app_radgw/rgwx_acct.c	(revision 974)
@@ -1266,5 +1266,5 @@
 		
 		default:
-			fd_log_debug("[acct.rgwx] Received Diameter answer with error code '%d' from server '%.*s', session %.*s, not translating into Accounting-Response\n",
+			fd_log_debug("[acct.rgwx] Received Diameter answer with error code '%d' from server '%.*s', session %.*s, not translating into Accounting-Response",
 					ahdr->avp_value->u32, 
 					oh->avp_value->os.len, oh->avp_value->os.data,
@@ -1273,5 +1273,5 @@
 			if (avp) {
 				CHECK_FCT( fd_msg_avp_hdr ( avp, &ahdr ) );
-				fd_log_debug("[acct.rgwx]   Error-Message content: '%.*s'\n",
+				fd_log_debug("[acct.rgwx]   Error-Message content: '%.*s'",
 						ahdr->avp_value->os.len, ahdr->avp_value->os.data);
 			}
@@ -1279,10 +1279,10 @@
 			if (avp) {
 				CHECK_FCT( fd_msg_avp_hdr ( avp, &ahdr ) );
-				fd_log_debug("[acct.rgwx]   Error-Reporting-Host: '%.*s'\n",
+				fd_log_debug("[acct.rgwx]   Error-Reporting-Host: '%.*s'",
 						ahdr->avp_value->os.len, ahdr->avp_value->os.data);
 			}
 			CHECK_FCT( fd_msg_search_avp (*diam_ans, cs->dict.Failed_AVP, &avp) );
 			if (avp) {
-				fd_log_debug("[acct.rgwx]   Failed-AVP was included in the message.\n");
+				fd_log_debug("[acct.rgwx]   Failed-AVP was included in the message.");
 				/* Dump its content ? */
 			}
Index: extensions/app_radgw/rgwx_auth.c
===================================================================
--- extensions/app_radgw/rgwx_auth.c	(revision 972)
+++ extensions/app_radgw/rgwx_auth.c	(revision 974)
@@ -1237,5 +1237,5 @@
 			/* In any case, the following is processed: */
 			(*rad_fw)->hdr->code = RADIUS_CODE_ACCESS_REJECT;
-			fd_log_debug("[auth.rgwx] Received Diameter answer with error code '%d' from server '%.*s', session %.*s, translating into Access-Reject\n",
+			fd_log_debug("[auth.rgwx] Received Diameter answer with error code '%d' from server '%.*s', session %.*s, translating into Access-Reject",
 					ahdr->avp_value->u32, 
 					oh->avp_value->os.len, oh->avp_value->os.data,
@@ -1244,5 +1244,5 @@
 			if (avp_x) {
 				CHECK_FCT( fd_msg_avp_hdr ( avp_x, &ahdr ) );
-				fd_log_debug("[auth.rgwx]   Error-Message content: '%.*s'\n",
+				fd_log_debug("[auth.rgwx]   Error-Message content: '%.*s'",
 						ahdr->avp_value->os.len, ahdr->avp_value->os.data);
 			}
@@ -1250,10 +1250,10 @@
 			if (avp_x) {
 				CHECK_FCT( fd_msg_avp_hdr ( avp_x, &ahdr ) );
-				fd_log_debug("[auth.rgwx]   Error-Reporting-Host: '%.*s'\n",
+				fd_log_debug("[auth.rgwx]   Error-Reporting-Host: '%.*s'",
 						ahdr->avp_value->os.len, ahdr->avp_value->os.data);
 			}
 			CHECK_FCT( fd_msg_search_avp (*diam_ans, cs->dict.Failed_AVP, &avp_x) );
 			if (avp_x) {
-				fd_log_debug("[auth.rgwx]   Failed-AVP was included in the message.\n");
+				fd_log_debug("[auth.rgwx]   Failed-AVP was included in the message.");
 				/* Dump its content ? */
 			}
@@ -1449,5 +1449,5 @@
 					/* We only check the value */
 					if (ahdr->avp_value->u32 != 3) {
-						fd_log_debug("[auth.rgwx] Received Diameter answer with Auth-Request-Type set to %d (%s) from server %.*s, session %.*s.\n"
+						fd_log_debug("[auth.rgwx] Received Diameter answer with Auth-Request-Type set to %d (%s) from server %.*s, session %.*s."
 								"  This may cause interoperability problems with RADIUS.\n",
 								ahdr->avp_value->u32,
@@ -1614,5 +1614,5 @@
 				case DIAM_ATTR_NAS_FILTER_RULE:
 					/* This is not translatable to RADIUS */
-					fd_log_debug("[auth.rgwx] Received Diameter answer with non-translatable NAS-Filter-Rule AVP from '%.*s' (session: '%.*s'), ignoring.\n",
+					fd_log_debug("[auth.rgwx] Received Diameter answer with non-translatable NAS-Filter-Rule AVP from '%.*s' (session: '%.*s'), ignoring.",
 							oh->avp_value->os.len, oh->avp_value->os.data,
 							sid->avp_value->os.len, sid->avp_value->os.data);
@@ -1647,5 +1647,5 @@
 				case DIAM_ATTR_QOS_FILTER_RULE:
 					/* This is not translatable to RADIUS */
-					fd_log_debug("[auth.rgwx] Received Diameter answer with non-translatable QoS-Filter-Rule AVP from '%.*s' (session: '%.*s'), ignoring.\n",
+					fd_log_debug("[auth.rgwx] Received Diameter answer with non-translatable QoS-Filter-Rule AVP from '%.*s' (session: '%.*s'), ignoring.",
 							oh->avp_value->os.len, oh->avp_value->os.data,
 							sid->avp_value->os.len, sid->avp_value->os.data);
@@ -1856,5 +1856,5 @@
 						
 						if (ahdr->avp_value->os.len != 64) {
-							TRACE_DEBUG(INFO, "Received EAP-Master-Session-Key attribute with length %d != 64.\n", ahdr->avp_value->os.len)
+							TRACE_DEBUG(INFO, "Received EAP-Master-Session-Key attribute with length %d != 64.", ahdr->avp_value->os.len)
 						}
 						
Index: extensions/app_radgw/rgwx_debug.c
===================================================================
--- extensions/app_radgw/rgwx_debug.c	(revision 740)
+++ extensions/app_radgw/rgwx_debug.c	(revision 974)
@@ -57,14 +57,14 @@
 	
 	auth =  &(msg->hdr->authenticator[0]);
-	fd_log_debug(" id  : 0x%02hhx, code: %hhd (%s)\n", msg->hdr->identifier, msg->hdr->code, rgw_msg_code_str(msg->hdr->code));
-	fd_log_debug(" auth: %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx\n",
+	fd_log_debug(" id  : 0x%02hhx, code: %hhd (%s)", msg->hdr->identifier, msg->hdr->code, rgw_msg_code_str(msg->hdr->code));
+	fd_log_debug(" auth: %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx",
 			auth[0], auth[1], auth[2], auth[3], 
 			auth[4], auth[5], auth[6], auth[7]);
-	fd_log_debug("       %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx\n",
+	fd_log_debug("       %02hhx %02hhx %02hhx %02hhx  %02hhx %02hhx %02hhx %02hhx",
 			auth[8],  auth[9],  auth[10], auth[11], 
 			auth[12], auth[13], auth[14], auth[15]);
 	for (i = 0; i < msg->attr_used; i++) {
 		struct radius_attr_hdr *attr = (struct radius_attr_hdr *)(msg->buf + msg->attr_pos[i]);
-		fd_log_debug("  - len:%3hhu, type:0x%02hhx (%s)\n", attr->length, attr->type, rgw_msg_attrtype_str(attr->type));
+		fd_log_debug("  - len:%3hhu, type:0x%02hhx (%s)", attr->length, attr->type, rgw_msg_attrtype_str(attr->type));
 		/* If we need to dump the value, it's better to call directly radius_msg_dump instead... */
 	}
@@ -76,29 +76,29 @@
 	TRACE_ENTRY("%p %p %p %p %p %p", cs, session, rad_req, rad_ans, diam_fw, cli);
 	
-	fd_log_debug("------------- RADIUS/Diameter Request Debug%s%s%s -------------\n", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
+	fd_log_debug("------------- RADIUS/Diameter Request Debug%s%s%s -------------", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
 	
 	if (!rad_req) {
-		fd_log_debug(" RADIUS request: NULL pointer\n");
+		fd_log_debug(" RADIUS request: NULL pointer");
 	} else {
-		fd_log_debug(" RADIUS request (%p) DUMP:\n", rad_req);
+		fd_log_debug(" RADIUS request (%p) DUMP:", rad_req);
 		debug_dump_radius(rad_req);
 	}
 	
 	if (!rad_ans || ! *rad_ans) {
-		fd_log_debug(" RADIUS answer: NULL pointer\n");
+		fd_log_debug(" RADIUS answer: NULL pointer");
 	} else {
-		fd_log_debug(" RADIUS answer (%p) DUMP:\n", *rad_ans);
+		fd_log_debug(" RADIUS answer (%p) DUMP:", *rad_ans);
 		debug_dump_radius(*rad_ans);
 	}
 	
 	if (!diam_fw || ! *diam_fw) {
-		fd_log_debug(" Diameter message: NULL pointer\n");
+		fd_log_debug(" Diameter message: NULL pointer");
 	} else {
-		fd_log_debug(" Diameter message (%p) DUMP:\n", *diam_fw);
+		fd_log_debug(" Diameter message (%p) DUMP:", *diam_fw);
 		fd_msg_dump_walk(0, *diam_fw);
 	}
 	
 	if (!session || ! *session) {
-		fd_log_debug(" Diameter session: NULL pointer\n");
+		fd_log_debug(" Diameter session: NULL pointer");
 	} else {
 		os0_t str;
@@ -106,8 +106,8 @@
 		CHECK_FCT( fd_sess_getsid(*session, &str, &str_len) );
 
-		fd_log_debug(" Diameter session: %s\n", str);
+		fd_log_debug(" Diameter session: %s", str);
 	}
 	
-	fd_log_debug("===========  Debug%s%s%s complete =============\n", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
+	fd_log_debug("===========  Debug%s%s%s complete =============", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
 	
 	return 0;
@@ -119,21 +119,21 @@
 	TRACE_ENTRY("%p %p %p %p %p %p", cs, session, diam_ans, rad_fw, cli, stateful);
 
-	fd_log_debug("------------- RADIUS/Diameter Answer Debug%s%s%s -------------\n", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
+	fd_log_debug("------------- RADIUS/Diameter Answer Debug%s%s%s -------------", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
 	
 	if (!diam_ans || ! *diam_ans) {
-		fd_log_debug(" Diameter message: NULL pointer\n");
+		fd_log_debug(" Diameter message: NULL pointer");
 	} else {
-		fd_log_debug(" Diameter message (%p) DUMP:\n", *diam_ans);
+		fd_log_debug(" Diameter message (%p) DUMP:", *diam_ans);
 		fd_msg_dump_walk(0, *diam_ans);
 	}
 	
 	if (!rad_fw || ! *rad_fw) {
-		fd_log_debug(" RADIUS answer: NULL pointer\n");
+		fd_log_debug(" RADIUS answer: NULL pointer");
 	} else {
-		fd_log_debug(" RADIUS answer (%p) DUMP:\n", *rad_fw);
+		fd_log_debug(" RADIUS answer (%p) DUMP:", *rad_fw);
 		debug_dump_radius(*rad_fw);
 	}
 	
-	fd_log_debug("===========  Debug%s%s%s complete =============\n", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
+	fd_log_debug("===========  Debug%s%s%s complete =============", cs ? " [" : "", cs ? (char *)cs : "", cs ? "]" : "");
 	return 0;
 }
Index: extensions/app_radgw/rgwx_echodrop.c
===================================================================
--- extensions/app_radgw/rgwx_echodrop.c	(revision 741)
+++ extensions/app_radgw/rgwx_echodrop.c	(revision 974)
@@ -60,5 +60,5 @@
 	TRACE_ENTRY("%p %p", conffile, state);
 	CHECK_PARAMS( state );
-	CHECK_PARAMS_DO( conffile, { fd_log_debug("[echodrop.rgwx] The configuration file is not optional for this plugin.\n"); return EINVAL; } );
+	CHECK_PARAMS_DO( conffile, { fd_log_debug("[echodrop.rgwx] The configuration file is not optional for this plugin."); return EINVAL; } );
 	
 	CHECK_MALLOC( new = malloc(sizeof(struct rgwp_config)) );
@@ -82,16 +82,16 @@
 			char * act = (eca->action == ACT_ECHO) ? "ECHO" : "DROP";
 			if (eca->ext) {
-				fd_log_debug("  %s Code: %hhu, Vendor: %u, Ext-Type: %hu\n", act, eca->code, eca->vendor_id, eca->extype);
+				fd_log_debug("  %s Code: %hhu, Vendor: %u, Ext-Type: %hu", act, eca->code, eca->vendor_id, eca->extype);
 				continue;
 			}
 			if (eca->tlv) {
-				fd_log_debug("  %s Code: %hhu, Vendor: %u, Type: %hhu\n", act, eca->code, eca->vendor_id, eca->type);
+				fd_log_debug("  %s Code: %hhu, Vendor: %u, Type: %hhu", act, eca->code, eca->vendor_id, eca->type);
 				continue;
 			}
 			if (eca->vsa) {
-				fd_log_debug("  %s Code: %hhu, Vendor: %u\n", act, eca->code, eca->vendor_id);
-				continue;
-			}
-			fd_log_debug("  %s Code: %hhu\n", act, eca->code);
+				fd_log_debug("  %s Code: %hhu, Vendor: %u", act, eca->code, eca->vendor_id);
+				continue;
+			}
+			fd_log_debug("  %s Code: %hhu", act, eca->code);
 		}
 	}
@@ -186,5 +186,5 @@
 			if (eca->ext) {
 				/* To be done */
-				fd_log_debug("Extended attributes are not implemented yet!\n");
+				fd_log_debug("Extended attributes are not implemented yet!");
 				ASSERT(0);
 				continue;
@@ -219,5 +219,5 @@
 		CHECK_PARAMS_DO(*session,
 			{
-				fd_log_debug(	"[echodrop.rgwx] The extension is configured to echo some attributes from this message, but no session object has been created for it (yet).\n"
+				fd_log_debug(	"[echodrop.rgwx] The extension is configured to echo some attributes from this message, but no session object has been created for it (yet)."
 						"  Please check your configuration file and include a session-generating extension BEFORE calling echodrop.rgwx to echo attributes.\n"
 						"  Please use debug.rgwx to retrieve more information.\n" );
Index: extensions/app_radgw/rgwx_echodrop.l
===================================================================
--- extensions/app_radgw/rgwx_echodrop.l	(revision 741)
+++ extensions/app_radgw/rgwx_echodrop.l	(revision 974)
@@ -71,5 +71,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("[echodrop.rgwx] Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("[echodrop.rgwx] Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -93,5 +93,5 @@
 	/* Unrecognized character */
 <*>.			{ 
-				fd_log_debug("[echodrop.rgwx] Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("[echodrop.rgwx] Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/app_radgw/rgwx_echodrop.y
===================================================================
--- extensions/app_radgw/rgwx_echodrop.y	(revision 741)
+++ extensions/app_radgw/rgwx_echodrop.y	(revision 974)
@@ -78,5 +78,5 @@
 	if (rgwx_echodropin == NULL) {
 		ret = errno;
-		fd_log_debug("[echodrop.rgwx] Unable to open plugin configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("[echodrop.rgwx] Unable to open plugin configuration file %s for reading: %s", conffile, strerror(ret));
 		return ret;
 	}
@@ -97,9 +97,9 @@
 {
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/app_radgw/rgwx_sip.c
===================================================================
--- extensions/app_radgw/rgwx_sip.c	(revision 924)
+++ extensions/app_radgw/rgwx_sip.c	(revision 974)
@@ -803,5 +803,5 @@
 		default:
 			(*rad_fw)->hdr->code = RADIUS_CODE_ACCESS_REJECT;
-			fd_log_debug("[sip.rgwx] Received Diameter answer with error code '%d', session %.*s, translating into Access-Reject\n",
+			fd_log_debug("[sip.rgwx] Received Diameter answer with error code '%d', session %.*s, translating into Access-Reject",
 					ahdr->avp_value->u32, 
 					sid->avp_value->os.len, sid->avp_value->os.data);
Index: extensions/app_redirect/ard_conf.l
===================================================================
--- extensions/app_redirect/ard_conf.l	(revision 740)
+++ extensions/app_redirect/ard_conf.l	(revision 974)
@@ -82,5 +82,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return TOK_LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -94,5 +94,5 @@
 				CHECK_MALLOC_DO( yylval->tstring.str = strdup(yytext+2), 
 				{
-					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno));
 					return TOK_LEX_ERROR; /* trig an error in yacc parser */
 				} );
@@ -107,5 +107,5 @@
 				CHECK_MALLOC_DO( yylval->tstring.str = strdup(yytext+1), 
 				{
-					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno));
 					return TOK_LEX_ERROR; /* trig an error in yacc parser */
 				} );
@@ -134,5 +134,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]\":=;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return TOK_LEX_ERROR; 
 			}
Index: extensions/app_redirect/ard_conf.y
===================================================================
--- extensions/app_redirect/ard_conf.y	(revision 740)
+++ extensions/app_redirect/ard_conf.y	(revision 974)
@@ -76,10 +76,10 @@
 		return;
 		
-	fd_log_debug("app_redirect: configuration dump:\n");
-	fd_log_debug("   default_redirect_cache_time : %u sec\n", ard_conf->default_rct);
+	fd_log_debug("app_redirect: configuration dump:");
+	fd_log_debug("   default_redirect_cache_time : %u sec", ard_conf->default_rct);
 	for (li = ard_conf->rules.next; li != &ard_conf->rules; li = li->next) {
 		ard_rule_dump(li->o);
 	}
-	fd_log_debug("app_redirect: end of configuration dump\n");
+	fd_log_debug("app_redirect: end of configuration dump");
 }
 
Index: extensions/app_redirect/ard_rules.c
===================================================================
--- extensions/app_redirect/ard_rules.c	(revision 740)
+++ extensions/app_redirect/ard_rules.c	(revision 974)
@@ -54,33 +54,31 @@
 {
 	struct fd_list * li;
-	fd_log_debug("   rule @%p: %s, %us\n", r, redir_type_str[r->type], r->rct);
+	fd_log_debug("   rule @%p: %s, %us", r, redir_type_str[r->type], r->rct);
 	for (li = r->criteria.next; li != &r->criteria; li = li->next) {
 		struct ard_criteria * c = li->o;
-		fd_log_debug("      Criteria: ");
 		switch (c->type) {
 			case FROM_ID:
-				fd_log_debug("received from peer %s'%s'", c->is_regex?"REGEX":"", c->s);
+				fd_log_debug("      Criteria: received from peer %s'%s'", c->is_regex?"REGEX":"", c->s);
 				break;
 			case FROM_REALM:
-				fd_log_debug("received from realm %s'%s'", c->is_regex?"REGEX":"", c->s);
+				fd_log_debug("      Criteria: received from realm %s'%s'", c->is_regex?"REGEX":"", c->s);
 				break;
 			case APP_ID:
-				fd_log_debug("application id is %u", c->i);
+				fd_log_debug("      Criteria: application id is %u", c->i);
 				break;
 			case AVP_INT:
-				fd_log_debug("contains '%s' AVP with value '%d'", c->avp_info.avp_name, c->i);
+				fd_log_debug("      Criteria: contains '%s' AVP with value '%d'", c->avp_info.avp_name, c->i);
 				break;
 			case AVP_STR:
-				fd_log_debug("contains '%s' AVP with value %s'%s'", c->avp_info.avp_name, c->is_regex?"REGEX":"", c->s);
+				fd_log_debug("      Criteria: contains '%s' AVP with value %s'%s'", c->avp_info.avp_name, c->is_regex?"REGEX":"", c->s);
 				break;
 		
 			default:
-				fd_log_debug("invalid (%d)!", c->type);
-		}
-		fd_log_debug("\n");
+				fd_log_debug("      Criteria: invalid (%d)!", c->type);
+		}
 	}
 	for (li = r->targets.next; li != &r->targets; li = li->next) {
 		struct ard_target * t = li->o;
-		fd_log_debug("      Redirect to: '%s'\n", t->s);
+		fd_log_debug("      Redirect to: '%s'", t->s);
 	}
 }
Index: extensions/app_sip/app_sip.l
===================================================================
--- extensions/app_sip/app_sip.l	(revision 740)
+++ extensions/app_sip/app_sip.l	(revision 974)
@@ -79,5 +79,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -91,5 +91,5 @@
 				yylval->string = strdup(yytext+1);
 				if (!yylval->string) {
-					fd_log_debug("Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to copy the string '%s': %s", yytext, strerror(errno));
 					TRACE_DEBUG(INFO, "strdup failed");
 					return LEX_ERROR; /* trig an error in yacc parser */
@@ -156,5 +156,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]"*=>;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/app_sip/app_sip.y
===================================================================
--- extensions/app_sip/app_sip.y	(revision 740)
+++ extensions/app_sip/app_sip.y	(revision 974)
@@ -72,5 +72,5 @@
 	if (app_sipin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -98,9 +98,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/dbg_interactive/dbg_interactive.c
===================================================================
--- extensions/dbg_interactive/dbg_interactive.c	(revision 740)
+++ extensions/dbg_interactive/dbg_interactive.c	(revision 974)
@@ -61,7 +61,10 @@
 	CHECK_FCT_DO(fd_core_waitstartcomplete(), goto end);
 	
-	fd_log_debug("\nStarting interactive python interpreter [experimental].\n");
-	if (!arg) 
-		fd_log_debug("Example syntax:\n   >>> print cvar.fd_g_config.cnf_diamid\n   '%s'\n", fd_g_config->cnf_diamid);
+	fd_log_debug("Starting interactive python interpreter [experimental].");
+	if (!arg) {
+		fd_log_debug("Example syntax:");
+		fd_log_debug("   >>> print cvar.fd_g_config.cnf_diamid");
+		fd_log_debug("   '%s'", fd_g_config->cnf_diamid);
+	}
 	Py_Main(arg ? 2 : 1, dum);
 	
Index: extensions/dbg_monitor/dbg_monitor.c
===================================================================
--- extensions/dbg_monitor/dbg_monitor.c	(revision 740)
+++ extensions/dbg_monitor/dbg_monitor.c	(revision 974)
@@ -61,5 +61,5 @@
 		#ifdef DEBUG
 		for (i++; i % 30; i++) {
-			fd_log_debug("[dbg_monitor] %ih%*im%*is\n", i/3600, 2, (i/60) % 60 , 2, i%60); /* This makes it easier to detect inactivity periods in the log file */
+			fd_log_debug("[dbg_monitor] %ih%*im%*is", i/3600, 2, (i/60) % 60 , 2, i%60); /* This makes it easier to detect inactivity periods in the log file */
 			sleep(1);
 		}
@@ -67,5 +67,5 @@
 		sleep(3600); /* 1 hour */
 		#endif /* DEBUG */
-		fd_log_debug("[dbg_monitor] Dumping current information\n");
+		fd_log_debug("[dbg_monitor] Dumping current information");
 		CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_QUEUES, 0, NULL), /* continue */);
 		CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_SERV, 0, NULL), /* continue */);
@@ -80,5 +80,5 @@
 static void got_sig()
 {
-	fd_log_debug("[dbg_monitor] Dumping extra information\n");
+	fd_log_debug("[dbg_monitor] Dumping extra information");
 	CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_DICT, 0, NULL), /* continue */);
 	CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_CONFIG, 0, NULL), /* continue */);
Index: extensions/dbg_rt/dbg_rt.c
===================================================================
--- extensions/dbg_rt/dbg_rt.c	(revision 741)
+++ extensions/dbg_rt/dbg_rt.c	(revision 974)
@@ -48,5 +48,5 @@
 	TRACE_ENTRY("%p %p", cbdata, msg);
 	
-	fd_log_debug("[dbg_rt] FWD routing message: %p\n", msg ? *msg : NULL);
+	fd_log_debug("[dbg_rt] FWD routing message: %p", msg ? *msg : NULL);
 	if (msg)
 		fd_msg_dump_walk(INFO, *msg);
@@ -62,11 +62,11 @@
 	TRACE_ENTRY("%p %p %p", cbdata, msg, candidates);
 	
-	fd_log_debug("[dbg_rt] OUT routing message: %p\n", msg);
+	fd_log_debug("[dbg_rt] OUT routing message: %p", msg);
 	fd_msg_dump_walk(INFO, msg);
-	fd_log_debug("[dbg_rt] Current list of candidates (%p): (score - id)\n", msg);
+	fd_log_debug("[dbg_rt] Current list of candidates (%p): (score - id)", msg);
 	
 	for (li = candidates->next; li != candidates; li = li->next) {
 		struct rtd_candidate *c = (struct rtd_candidate *) li;
-		fd_log_debug("[dbg_rt]   %d -\t%s\n", c->score, c->diamid);
+		fd_log_debug("[dbg_rt]   %d -\t%s", c->score, c->diamid);
 	}
 	
Index: extensions/dict_legacy_xml/dict_lxml.l
===================================================================
--- extensions/dict_legacy_xml/dict_lxml.l	(revision 741)
+++ extensions/dict_legacy_xml/dict_lxml.l	(revision 974)
@@ -80,5 +80,5 @@
 				CHECK_MALLOC_DO( yylval->string = strdup(yytext+1), 
 				{
-					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 				} );
@@ -92,5 +92,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]\";\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/dict_legacy_xml/dict_lxml.y
===================================================================
--- extensions/dict_legacy_xml/dict_lxml.y	(revision 741)
+++ extensions/dict_legacy_xml/dict_lxml.y	(revision 974)
@@ -72,5 +72,5 @@
 	if (dict_lxmlin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -100,9 +100,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/dict_legacy_xml/dict_lxml_xml.c
===================================================================
--- extensions/dict_legacy_xml/dict_lxml_xml.c	(revision 740)
+++ extensions/dict_legacy_xml/dict_lxml_xml.c	(revision 974)
@@ -123,5 +123,5 @@
 
 static void dump_vendor(struct t_vend * v) {
-	fd_log_debug(" Vendor %d:'%s'\n", v->id, (char *)v->name);
+	fd_log_debug(" Vendor %d:'%s'", v->id, (char *)v->name);
 }
 
@@ -175,5 +175,5 @@
 	if (r->max != -1)
 		fd_log_debug("M:%d ", r->max);
-	fd_log_debug("%s\n", (char *)r->avpname);
+	fd_log_debug("%s", (char *)r->avpname);
 }
 
@@ -241,5 +241,5 @@
 static void dump_cmd(struct t_cmd * c) {
 	struct fd_list * li;
-	fd_log_debug("  Command %d %s: %s\n", c->code, 
+	fd_log_debug("  Command %d %s: %s", c->code, 
 		c->fmask ? ( c->flags ? "[P=1]" : "[P=0]") : "", c->name);
 	for (li = c->reqrules_fixed.next; li != &c->reqrules_fixed; li = li->next)
@@ -325,8 +325,8 @@
 
 static void dump_type(struct t_typedefn * t) {
-	fd_log_debug("  Type %s", (char *)t->name);
-	if (t->parent_name)
-		fd_log_debug("(parent: %s)", (char *)t->parent_name);
-	fd_log_debug("\n");
+	fd_log_debug("  Type %s%s%s%s", (char *)t->name,
+		     t->parent_name ? "(parent: " : "", 
+		     t->parent_name ? (char *)t->parent_name : "", 
+		     t->parent_name ? ")" : "");
 }
 
@@ -361,5 +361,5 @@
 
 static void dump_avptype(struct t_avptype * t) {
-	fd_log_debug("    data type: %s\n", t->type_name);
+	fd_log_debug("    data type: %s", t->type_name);
 }
 
@@ -398,5 +398,5 @@
 
 static void dump_enum(struct t_enum * e) {
-	fd_log_debug("    Value: %d == %s\n", e->code, e->name);
+	fd_log_debug("    Value: %d == %s", e->code, e->name);
 }	
 
@@ -469,10 +469,10 @@
 static void dump_avp(struct t_avp * a) {
 	struct fd_list * li;
-	fd_log_debug("  AVP %d %s%s: %s\n", a->code, 
+	fd_log_debug("  AVP %d %s%s: %s", a->code, 
 		a->fmask & AVP_FLAG_MANDATORY ? ( a->flags & AVP_FLAG_MANDATORY ? "[M=1]" : "[M=0]") : "", 
 		a->fmask & AVP_FLAG_VENDOR ? ( a->flags & AVP_FLAG_VENDOR ? "[V=1]" : "[V=0]") : "", 
 		a->name);
 	if (a->fmask & AVP_FLAG_VENDOR)
-		fd_log_debug("    vendor: %d\n", a->vendor);
+		fd_log_debug("    vendor: %d", a->vendor);
 	for (li = a->type.next; li != &a->type; li = li->next)
 		dump_avptype((struct t_avptype *)li);
@@ -561,5 +561,5 @@
 static void dump_appl(struct t_appl * a) {
 	struct fd_list * li;
-	fd_log_debug(" Application %d: %s\n", a->id, a->name);
+	fd_log_debug(" Application %d: %s", a->id, a->name);
 	for (li = a->commands.next; li != &a->commands; li = li->next)
 		dump_cmd((struct t_cmd *)li);
@@ -1021,9 +1021,9 @@
 		TRACE_DEBUG(INFO, "Error encountered while parsing tag of:");
 		if (data->cur_app)
-			fd_log_debug("  Application: '%s'\n", data->cur_app->name);
+			fd_log_debug("  Application: '%s'", data->cur_app->name);
 		if (data->cur_cmd)
-			fd_log_debug("  Command    : '%s'\n", data->cur_cmd->name);
+			fd_log_debug("  Command    : '%s'", data->cur_cmd->name);
 		if (data->cur_avp)
-			fd_log_debug("  AVP        : '%s'\n", data->cur_avp->name);
+			fd_log_debug("  AVP        : '%s'", data->cur_avp->name);
 	}
 	return;
Index: extensions/rt_default/rtd_conf.l
===================================================================
--- extensions/rt_default/rtd_conf.l	(revision 741)
+++ extensions/rt_default/rtd_conf.l	(revision 974)
@@ -82,5 +82,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -107,5 +107,5 @@
 				CHECK_MALLOC_DO( yylval->string = strdup(yytext+2), 
 				{
-					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 				} );
@@ -119,5 +119,5 @@
 				CHECK_MALLOC_DO( yylval->string = strdup(yytext+1), 
 				{
-					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 				} );
@@ -140,5 +140,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]\"*:=+;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/rt_default/rtd_conf.y
===================================================================
--- extensions/rt_default/rtd_conf.y	(revision 741)
+++ extensions/rt_default/rtd_conf.y	(revision 974)
@@ -71,5 +71,5 @@
 	if (rtd_confin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -99,9 +99,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/rt_default/rtd_rules.c
===================================================================
--- extensions/rt_default/rtd_rules.c	(revision 741)
+++ extensions/rt_default/rtd_rules.c	(revision 974)
@@ -158,5 +158,5 @@
 static void dump_rule(int indent, struct rule * rule)
 {
-	fd_log_debug("%*s%s%s%s += %d\n",
+	fd_log_debug("%*s%s%s%s += %d",
 		indent, "",
 		rule->md.is_regex ? "[" : "'",
@@ -168,5 +168,5 @@
 {
 	int i;
-	fd_log_debug("%*s%s%s%s :\n",
+	fd_log_debug("%*s%s%s%s :",
 		indent, "",
 		target->md.is_regex ? "[" : "'",
@@ -176,5 +176,5 @@
 		if (! FD_IS_LIST_EMPTY(&target->rules[i])) {
 			struct fd_list * li;
-			fd_log_debug("%*s  rules[%d]:\n",
+			fd_log_debug("%*s  rules[%d]:",
 				indent, "", i);
 			for (li = target->rules[i].next; li != &target->rules[i]; li = li->next) {
@@ -594,9 +594,9 @@
 {
 	int i;
-	fd_log_debug("[rt_default] Dumping rules repository...\n");
+	fd_log_debug("[rt_default] Dumping rules repository...");
 	for (i = 0; i < RTD_TAR_MAX; i++) {
 		if (!FD_IS_LIST_EMPTY( &TARGETS[i] )) {
 			struct fd_list * li;
-			fd_log_debug("  Targets list %d:\n", i);
+			fd_log_debug("  Targets list %d:", i);
 			for (li = TARGETS[i].next; li != &TARGETS[i]; li = li->next) {
 				dump_target(4, (struct target *)li);
@@ -605,4 +605,4 @@
 	}
 	
-	fd_log_debug("[rt_default] End of dump\n");
-}
+	fd_log_debug("[rt_default] End of dump");
+}
Index: extensions/rt_ereg/rtereg_conf.l
===================================================================
--- extensions/rt_ereg/rtereg_conf.l	(revision 741)
+++ extensions/rt_ereg/rtereg_conf.l	(revision 974)
@@ -81,5 +81,5 @@
 				CHECK_MALLOC_DO( yylval->string = strdup(yytext+1), 
 				{
-					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 				} );
@@ -96,5 +96,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -113,5 +113,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]\":=+;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/rt_ereg/rtereg_conf.y
===================================================================
--- extensions/rt_ereg/rtereg_conf.y	(revision 741)
+++ extensions/rt_ereg/rtereg_conf.y	(revision 974)
@@ -68,5 +68,5 @@
 	if (rtereg_confin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -96,9 +96,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/test_acct/test_acct.c
===================================================================
--- extensions/test_acct/test_acct.c	(revision 740)
+++ extensions/test_acct/test_acct.c	(revision 974)
@@ -73,8 +73,8 @@
 		CHECK_FCT( fd_msg_rescode_set( ans, "DIAMETER_SUCCESS", NULL, NULL, 1 ) );
 		
-		fd_log_debug("--------------Received the following Accounting message:--------------\n");
+		fd_log_debug("--------------Received the following Accounting message:--------------");
 		
 		CHECK_FCT( fd_sess_getsid ( sess, &s, &sl ) );
-		fd_log_debug("Session: %.*s\n", (int)sl, s);
+		fd_log_debug("Session: %.*s", (int)sl, s);
 		
 		/* The AVPs that we copy in the answer */
@@ -82,5 +82,5 @@
 		if (a) {
 			CHECK_FCT( fd_msg_avp_hdr( a, &h )  );
-			fd_log_debug("Accounting-Record-Type: %d (%s)\n", h->avp_value->u32, 
+			fd_log_debug("Accounting-Record-Type: %d (%s)", h->avp_value->u32, 
 						/* it would be better to search this in the dictionary, but it is only for debug, so ok */
 						(h->avp_value->u32 == 1) ? "EVENT_RECORD" : 
@@ -97,5 +97,5 @@
 		if (a) {
 			CHECK_FCT( fd_msg_avp_hdr( a, &h )  );
-			fd_log_debug("Accounting-Record-Number: %d\n", h->avp_value->u32);
+			fd_log_debug("Accounting-Record-Number: %d", h->avp_value->u32);
 			CHECK_FCT( fd_msg_avp_new ( tac_dict.Accounting_Record_Number, 0, &a ) );
 			CHECK_FCT( fd_msg_avp_setvalue( a, h->avp_value ) );
@@ -105,5 +105,5 @@
 		/* We may also dump other data from the message, such as Accounting session Id, number of packets, ...  */
 
-		fd_log_debug("----------------------------------------------------------------------\n");
+		fd_log_debug("----------------------------------------------------------------------");
 		
 		/* Send the answer */
Index: extensions/test_app/ta_bench.c
===================================================================
--- extensions/test_app/ta_bench.c	(revision 928)
+++ extensions/test_app/ta_bench.c	(revision 974)
@@ -236,23 +236,23 @@
 	
 	/* Now, display the statistics */
-	fd_log_debug( "------- app_test Benchmark result ---------\n");
+	fd_log_debug( "------- app_test Benchmark result ---------");
 	if (now.tv_nsec >= end_time.tv_nsec) {
-		fd_log_debug( " Executing for: %d.%06ld sec\n",
+		fd_log_debug( " Executing for: %d.%06ld sec",
 				(int)(now.tv_sec + ta_conf->bench_duration - end_time.tv_sec),
 				(long)(now.tv_nsec - end_time.tv_nsec) / 1000);
 	} else {
-		fd_log_debug( " Executing for: %d.%06ld sec\n",
+		fd_log_debug( " Executing for: %d.%06ld sec",
 				(int)(now.tv_sec + ta_conf->bench_duration - 1 - end_time.tv_sec),
 				(long)(now.tv_nsec + 1000000000 - end_time.tv_nsec) / 1000);
 	}
-	fd_log_debug( "   %llu messages sent\n", end.nb_sent - start.nb_sent);
-	fd_log_debug( "   %llu error(s) received\n", end.nb_errs - start.nb_errs);
-	fd_log_debug( "   %llu answer(s) received\n", end.nb_recv - start.nb_recv);
-	fd_log_debug( "   Overall:\n");
-	fd_log_debug( "     fastest: %ld.%06ld sec.\n", end.shortest / 1000000, end.shortest % 1000000);
-	fd_log_debug( "     slowest: %ld.%06ld sec.\n", end.longest / 1000000, end.longest % 1000000);
-	fd_log_debug( "     Average: %ld.%06ld sec.\n", end.avg / 1000000, end.avg % 1000000);
-	fd_log_debug( "   Throughput: %llu messages / sec\n", (end.nb_recv - start.nb_recv) / (( now.tv_sec + ta_conf->bench_duration - end_time.tv_sec ) + ((now.tv_nsec - end_time.tv_nsec) / 1000000000)));
-	fd_log_debug( "-------------------------------------\n");
+	fd_log_debug( "   %llu messages sent", end.nb_sent - start.nb_sent);
+	fd_log_debug( "   %llu error(s) received", end.nb_errs - start.nb_errs);
+	fd_log_debug( "   %llu answer(s) received", end.nb_recv - start.nb_recv);
+	fd_log_debug( "   Overall:");
+	fd_log_debug( "     fastest: %ld.%06ld sec.", end.shortest / 1000000, end.shortest % 1000000);
+	fd_log_debug( "     slowest: %ld.%06ld sec.", end.longest / 1000000, end.longest % 1000000);
+	fd_log_debug( "     Average: %ld.%06ld sec.", end.avg / 1000000, end.avg % 1000000);
+	fd_log_debug( "   Throughput: %llu messages / sec", (end.nb_recv - start.nb_recv) / (( now.tv_sec + ta_conf->bench_duration - end_time.tv_sec ) + ((now.tv_nsec - end_time.tv_nsec) / 1000000000)));
+	fd_log_debug( "-------------------------------------");
 
 }
Index: extensions/test_app/ta_conf.l
===================================================================
--- extensions/test_app/ta_conf.l	(revision 740)
+++ extensions/test_app/ta_conf.l	(revision 974)
@@ -81,5 +81,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -93,5 +93,5 @@
 				yylval->string = strdup(yytext+1);
 				if (!yylval->string) {
-					fd_log_debug("Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to copy the string '%s': %s", yytext, strerror(errno));
 					TRACE_DEBUG(INFO, "strdup failed");
 					return LEX_ERROR; /* trig an error in yacc parser */
@@ -163,5 +163,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]"*=>;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/test_app/ta_conf.y
===================================================================
--- extensions/test_app/ta_conf.y	(revision 740)
+++ extensions/test_app/ta_conf.y	(revision 974)
@@ -72,5 +72,5 @@
 	if (ta_confin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -98,9 +98,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/test_app/ta_serv.c
===================================================================
--- extensions/test_app/ta_serv.c	(revision 741)
+++ extensions/test_app/ta_serv.c	(revision 974)
@@ -47,5 +47,5 @@
 	TRACE_ENTRY("%p %p %p %p", msg, avp, sess, act);
 	
-	fd_log_debug("Unexpected message received!\n");
+	fd_log_debug("Unexpected message received!");
 	
 	return ENOTSUP;
Index: extensions/test_app/test_app.c
===================================================================
--- extensions/test_app/test_app.c	(revision 741)
+++ extensions/test_app/test_app.c	(revision 974)
@@ -72,14 +72,14 @@
 	if (!TRACE_BOOL(INFO))
 		return;
-	fd_log_debug( "------- app_test configuration dump: ---------\n");
-	fd_log_debug( " Vendor Id .......... : %u\n", ta_conf->vendor_id);
-	fd_log_debug( " Application Id ..... : %u\n", ta_conf->appli_id);
-	fd_log_debug( " Command Id ......... : %u\n", ta_conf->cmd_id);
-	fd_log_debug( " AVP Id ............. : %u\n", ta_conf->avp_id);
-	fd_log_debug( " Mode ............... : %s%s%s\n", ta_conf->mode & MODE_SERV ? "Serv" : "", ta_conf->mode & MODE_CLI ? "Cli" : "",  ta_conf->mode & MODE_BENCH ? " (Benchmark)" : "");
-	fd_log_debug( " Destination Realm .. : %s\n", ta_conf->dest_realm ?: "- none -");
-	fd_log_debug( " Destination Host ... : %s\n", ta_conf->dest_host ?: "- none -");
-	fd_log_debug( " Signal ............. : %i\n", ta_conf->signal);
-	fd_log_debug( "------- /app_test configuration dump ---------\n");
+	fd_log_debug( "------- app_test configuration dump: ---------");
+	fd_log_debug( " Vendor Id .......... : %u", ta_conf->vendor_id);
+	fd_log_debug( " Application Id ..... : %u", ta_conf->appli_id);
+	fd_log_debug( " Command Id ......... : %u", ta_conf->cmd_id);
+	fd_log_debug( " AVP Id ............. : %u", ta_conf->avp_id);
+	fd_log_debug( " Mode ............... : %s%s%s", ta_conf->mode & MODE_SERV ? "Serv" : "", ta_conf->mode & MODE_CLI ? "Cli" : "",  ta_conf->mode & MODE_BENCH ? " (Benchmark)" : "");
+	fd_log_debug( " Destination Realm .. : %s", ta_conf->dest_realm ?: "- none -");
+	fd_log_debug( " Destination Host ... : %s", ta_conf->dest_host ?: "- none -");
+	fd_log_debug( " Signal ............. : %i", ta_conf->signal);
+	fd_log_debug( "------- /app_test configuration dump ---------");
 }
 
@@ -107,11 +107,11 @@
 		
 		/* Now, display everything */
-		fd_log_debug( "------- app_test statistics ---------\n");
+		fd_log_debug( "------- app_test statistics ---------");
 		if (now.tv_nsec >= start.tv_nsec) {
-			fd_log_debug( " Executing for: %d.%06ld sec\n",
+			fd_log_debug( " Executing for: %d.%06ld sec",
 					(int)(now.tv_sec - start.tv_sec),
 					(long)(now.tv_nsec - start.tv_nsec) / 1000);
 		} else {
-			fd_log_debug( " Executing for: %d.%06ld sec\n",
+			fd_log_debug( " Executing for: %d.%06ld sec",
 					(int)(now.tv_sec - 1 - start.tv_sec),
 					(long)(now.tv_nsec + 1000000000 - start.tv_nsec) / 1000);
@@ -119,16 +119,16 @@
 		
 		if (ta_conf->mode & MODE_SERV) {
-			fd_log_debug( " Server: %llu message(s) echoed\n", copy.nb_echoed);
+			fd_log_debug( " Server: %llu message(s) echoed", copy.nb_echoed);
 		}
 		if (ta_conf->mode & MODE_CLI) {
-			fd_log_debug( " Client:\n");
-			fd_log_debug( "   %llu message(s) sent\n", copy.nb_sent);
-			fd_log_debug( "   %llu error(s) received\n", copy.nb_errs);
-			fd_log_debug( "   %llu answer(s) received\n", copy.nb_recv);
-			fd_log_debug( "     fastest: %ld.%06ld sec.\n", copy.shortest / 1000000, copy.shortest % 1000000);
-			fd_log_debug( "     slowest: %ld.%06ld sec.\n", copy.longest / 1000000, copy.longest % 1000000);
-			fd_log_debug( "     Average: %ld.%06ld sec.\n", copy.avg / 1000000, copy.avg % 1000000);
+			fd_log_debug( " Client:");
+			fd_log_debug( "   %llu message(s) sent", copy.nb_sent);
+			fd_log_debug( "   %llu error(s) received", copy.nb_errs);
+			fd_log_debug( "   %llu answer(s) received", copy.nb_recv);
+			fd_log_debug( "     fastest: %ld.%06ld sec.", copy.shortest / 1000000, copy.shortest % 1000000);
+			fd_log_debug( "     slowest: %ld.%06ld sec.", copy.longest / 1000000, copy.longest % 1000000);
+			fd_log_debug( "     Average: %ld.%06ld sec.", copy.avg / 1000000, copy.avg % 1000000);
 		}
-		fd_log_debug( "-------------------------------------\n");
+		fd_log_debug( "-------------------------------------");
 	}
 	
Index: extensions/test_netemul/test_netemul.l
===================================================================
--- extensions/test_netemul/test_netemul.l	(revision 740)
+++ extensions/test_netemul/test_netemul.l	(revision 974)
@@ -78,5 +78,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid float: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid float: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -92,5 +92,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid long: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid long: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -113,5 +113,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:][:digit:]=;%/\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/test_netemul/test_netemul.y
===================================================================
--- extensions/test_netemul/test_netemul.y	(revision 740)
+++ extensions/test_netemul/test_netemul.y	(revision 974)
@@ -68,5 +68,5 @@
 	if (test_netemulin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -96,9 +96,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
Index: extensions/test_sip/test_sip.l
===================================================================
--- extensions/test_sip/test_sip.l	(revision 740)
+++ extensions/test_sip/test_sip.l	(revision 974)
@@ -79,5 +79,5 @@
 				if (ret != 1) {
 					/* No matching: an error occurred */
-					fd_log_debug("Unable to convert the value '%s' to a valid number: %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to convert the value '%s' to a valid number: %s", yytext, strerror(errno));
 					return LEX_ERROR; /* trig an error in yacc parser */
 					/* Maybe we could REJECT instead of failing here? */
@@ -91,5 +91,5 @@
 				yylval->string = strdup(yytext+1);
 				if (!yylval->string) {
-					fd_log_debug("Unable to copy the string '%s': %s\n", yytext, strerror(errno));
+					fd_log_debug("Unable to copy the string '%s': %s", yytext, strerror(errno));
 					TRACE_DEBUG(INFO, "strdup failed");
 					return LEX_ERROR; /* trig an error in yacc parser */
@@ -131,5 +131,5 @@
 	/* Unrecognized sequence, if it did not match any previous pattern */
 [^[:space:]"*=>;\n]+	{ 
-				fd_log_debug("Unrecognized text on line %d col %d: '%s'.\n", yylloc->first_line, yylloc->first_column, yytext);
+				fd_log_debug("Unrecognized text on line %d col %d: '%s'.", yylloc->first_line, yylloc->first_column, yytext);
 			 	return LEX_ERROR; 
 			}
Index: extensions/test_sip/test_sip.y
===================================================================
--- extensions/test_sip/test_sip.y	(revision 740)
+++ extensions/test_sip/test_sip.y	(revision 974)
@@ -70,5 +70,5 @@
 	if (test_sipin == NULL) {
 		ret = errno;
-		fd_log_debug("Unable to open extension configuration file %s for reading: %s\n", conffile, strerror(ret));
+		fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
 		TRACE_DEBUG (INFO, "Error occurred, message logged -- configuration file.");
 		return ret;
@@ -96,9 +96,9 @@
 	
 	if (ploc->first_line != ploc->last_line)
-		fd_log_debug("%s:%d.%d-%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
 	else if (ploc->first_column != ploc->last_column)
-		fd_log_debug("%s:%d.%d-%d : %s\n", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
+		fd_log_debug("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
 	else
-		fd_log_debug("%s:%d.%d : %s\n", conffile, ploc->first_line, ploc->first_column, s);
+		fd_log_debug("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
 }
 
