diff --git a/ipacm/inc/IPACM_Conntrack_NATApp.h b/ipacm/inc/IPACM_Conntrack_NATApp.h
index 682316f..777a23f 100644
--- a/ipacm/inc/IPACM_Conntrack_NATApp.h
+++ b/ipacm/inc/IPACM_Conntrack_NATApp.h
@@ -67,7 +67,7 @@
                              int n =0; \
                              n = snprintf(log_buf, sizeof(log_buf), "%s:%d %s() %s", __FILE__,  __LINE__, __FUNCTION__, "Error:");\
                              snprintf((log_buf+n), (sizeof(log_buf)-n)-1, "Invalid table handle\n");\
-                             logmessage(log_buf);\
+                             logmessage(log_buf, LOG_ERR);\
 				  		             }
 
 class NatApp
@@ -103,6 +103,7 @@
 	static NatApp* GetInstance();
 
 	int AddTable(uint32_t);
+	uint32_t GetTableHdl(uint32_t);
 	int DeleteTable(uint32_t);
 
 	int AddEntry(const nat_table_entry *);
diff --git a/ipacm/inc/IPACM_Log.h b/ipacm/inc/IPACM_Log.h
index 785b654..f75e73c 100644
--- a/ipacm/inc/IPACM_Log.h
+++ b/ipacm/inc/IPACM_Log.h
@@ -48,6 +48,7 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <syslog.h>
 
 #define LOG_SIZE 200
 
@@ -58,7 +59,7 @@
                              int n =0; \
                              n = snprintf(log_buf, sizeof(log_buf), "%s:%d %s() ", __FILE__,  __LINE__, __FUNCTION__);\
                              snprintf((log_buf+n), (sizeof(log_buf)-n-1), fmt, ##__VA_ARGS__);\
-                             logmessage(log_buf);\
+                             logmessage(log_buf, LOG_DEBUG);\
 				  		             }
 
 
@@ -66,10 +67,10 @@
                              int n =0; \
                              n = snprintf(log_buf, sizeof(log_buf), "%s:%d %s() %s", __FILE__,  __LINE__, __FUNCTION__, "Error:");\
                              snprintf((log_buf+n), (sizeof(log_buf)-n-1), fmt, ##__VA_ARGS__);\
-                             logmessage(log_buf);\
+                             logmessage(log_buf, LOG_ERR);\
 				  		             }
 
-extern void logmessage(char *msg);
+extern void logmessage(char *msg, int log_level);
 extern char log_buf[LOG_SIZE];
 
 #ifdef __cplusplus
diff --git a/ipacm/src/IPACM_Conntrack_NATApp.cpp b/ipacm/src/IPACM_Conntrack_NATApp.cpp
index 9c14004..28de036 100644
--- a/ipacm/src/IPACM_Conntrack_NATApp.cpp
+++ b/ipacm/src/IPACM_Conntrack_NATApp.cpp
@@ -608,5 +608,13 @@
 	return -1;
 }
 
+uint32_t NatApp::GetTableHdl(uint32_t in_ip_addr)
+{
+	if(in_ip_addr == pub_ip_addr)
+	{
+		return nat_table_hdl;
+	}
 
+	return -1;
+}
 
diff --git a/ipacm/src/IPACM_Log.cpp b/ipacm/src/IPACM_Log.cpp
index 3333358..74ae2aa 100644
--- a/ipacm/src/IPACM_Log.cpp
+++ b/ipacm/src/IPACM_Log.cpp
@@ -39,30 +39,91 @@
 */
 #include "IPACM_Log.h"
 #include <stdlib.h>
+#include <unistd.h>
 
+/* write logging to a local file */
+#define LOG_USE_FILE "/etc/IPACM_LOG_F"
 #define FILE_NAME "/usr/ipacm_log.txt"
 
-static FILE *fp = NULL;
+/* To use syslog for logging and
+	 use logread cmd to read */
+#define LOG_USE_SYS  "/etc/IPACM_LOG_S"
+
+/* Maximum log file size. 1MB(1048576)  */
+#define MAX_LOG_FILE_SIZE (1048576ul/4)
+
 char log_buf[LOG_SIZE];
 
-void logmessage(char *msg)
+void logmessage(char *msg, int log_level)
 {
+#ifdef DEBUG
+	 static FILE *fp = NULL;
+	 static bool is_sys_log_open = false;
+	 static bool dft_syslog = false;
+	 int log_sys = 0, log_file = 0;
+
 	 printf("%s\n", msg);
-#if 0
-	 if(fp == NULL)
+
+	 if(dft_syslog == false)
 	 {
-			fp = fopen(FILE_NAME, "wb+");
-			if(fp  == NULL)
-			{
-				 printf("unable to open file\n");
-				 return;
-			}
+		 /* By Default sys log is open */
+		 fp = fopen(LOG_USE_SYS, "w+");
+		 if(fp != NULL)
+		 {
+			 dft_syslog = true;
+			 fclose(fp);
+			 fp = NULL;
+		 }
 	 }
 
-	 fprintf(fp, msg);
-	 fflush(fp);
+	 if(access(LOG_USE_SYS, F_OK) != -1 )
+	 {
+		 log_sys = 1;
+	 }
+	 else if(access(LOG_USE_FILE, F_OK) != -1)
+	 {
+		 log_file = 1;
+	 }
+	 else
+	 {
+		 log_sys = 0;
+		 log_file = 0;
+	 }
+
+	 if(log_sys)
+	 {
+		 if(is_sys_log_open == false)
+		 {
+			 setlogmask(LOG_UPTO(LOG_DEBUG));
+			 openlog("IPACM", LOG_PID, LOG_LOCAL0);
+
+			 is_sys_log_open = true;
+		 }
+		 syslog(log_level, msg);
+	 }
+	 else if(log_file)
+	 {
+		 if(fp == NULL)
+		 {
+				fp = fopen(FILE_NAME, "w+");
+				if(fp  == NULL)
+				{
+					 printf("unable to open file\n");
+					 return;
+				}
+		 }
+		 
+		 if(ftell(fp) > MAX_LOG_FILE_SIZE)
+		 {
+			 rewind(fp);
+			 fprintf(fp, "====Rewinding=====\n");
+		 }
+
+		 fprintf(fp, msg);
+		 fflush(fp);
+	}
 #endif
-	 return;
+	return;
 }
 
 
diff --git a/ipacm/src/Makefile.am b/ipacm/src/Makefile.am
index c43343a..57e3386 100644
--- a/ipacm/src/Makefile.am
+++ b/ipacm/src/Makefile.am
@@ -1,8 +1,8 @@
-EXTRA_CPPFLAGS	= -DDEBUG
 AM_CPPFLAGS = -I./../inc \
 	      -I$(top_srcdir)/ipanat/inc \
 	      ${LIBXML_CFLAGS}
 AM_CPPFLAGS += -Wall -Wundef -Wno-trigraphs
+AM_CPPFLAGS	+= -DDEBUG
 
 ipacm_SOURCES =	IPACM_Main.cpp \
 		IPACM_Conntrack_NATApp.cpp\
