diff --git a/bin/minindn b/bin/minindn
index e5305e9..2699bfd 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -110,7 +110,7 @@
         for host in hosts_conf:
             if host.cpu != None and self.isLimited != True:
                 self.isLimited = True
-            self.addHost(host.name, app=host.app, fib=host.uri_tuples,cpu=host.cpu,cores=host.cores,cache=host.cache)
+            self.addHost(host.name, app=host.app, params=host.uri_tuples, cpu=host.cpu,cores=host.cores,cache=host.cache)
 
         for link in links_conf:
             if len(link.linkDict) == 0:
diff --git a/bin/minindnedit b/bin/minindnedit
index 73c1305..c6e4945 100755
--- a/bin/minindnedit
+++ b/bin/minindnedit
@@ -245,6 +245,7 @@
                        'hostname':self.hostnameEntry.get(),
                        'startCommand':self.startEntry.get(),
                        'fibEntries':fibEntries,
+                       'nfd': self.nfdFrame.getValues(),
                        'nlsr': self.nlsrFrame.getValues()
             }
 
@@ -735,6 +736,10 @@
                         template.write('site=' + values['site'] + ' ')
                         template.write('nlsr-log-level=' + values['log-level'] + ' ')
                         template.write('max-faces-per-prefix=' + values['max-faces-per-prefix'] + ' ')
+                if 'nfd' in hOpts:
+                        values = hOpts['nfd']
+
+                        template.write('nfd-log-level=' + values['log-level'] + ' ')
 
                 template.write('\n')
 
@@ -1365,6 +1370,7 @@
                         newHostOpts['fibEntries'] = hostBox.result['fibEntries']
 
                     newHostOpts['nlsr'] = hostBox.nlsrFrame.getValues()
+                    newHostOpts['nfd'] = hostBox.nfdFrame.getValues()
 
                     self.hostOpts[name] = newHostOpts
 
diff --git a/ndn/conf_parser.py b/ndn/conf_parser.py
index 62cc8fa..395c6d7 100644
--- a/ndn/conf_parser.py
+++ b/ndn/conf_parser.py
@@ -6,6 +6,7 @@
         self.name = name
         self.app = app
         self.uri_tuples = params
+        self.params = params
         self.cpu = cpu
         self.cores = cores
         self.cache = cache
diff --git a/ndn/gui.py b/ndn/gui.py
index c4097e4..653dbbc 100644
--- a/ndn/gui.py
+++ b/ndn/gui.py
@@ -48,6 +48,12 @@
         self.logLevel = StringVar(self)
         self.addDropDown("Log level:", self.logLevel, LOG_LEVELS, LOG_LEVELS[3])
 
+    def getValues(self):
+        return {
+            "log-level": self.logLevel.get()
+        }
+
+
 class NlsrFrame(GuiFrame):
 
     HYPERBOLIC_STATES = [
diff --git a/ndn/nfd.py b/ndn/nfd.py
index 6fea538..817e8d9 100644
--- a/ndn/nfd.py
+++ b/ndn/nfd.py
@@ -10,6 +10,8 @@
         self.node = node
         self.isRunning = False
 
+        self.logLevel = node.params["params"].get("nfd-log-level", "NONE")
+
         # Create home directory for a node
         node.cmd("cd /tmp && mkdir %s" % node.name)
         node.cmd("cd %s" % node.name)
@@ -24,6 +26,9 @@
         # Copy nfd.conf file from /usr/local/etc/mini-ndn to the node's home
         node.cmd("sudo cp /usr/local/etc/mini-ndn/nfd.conf %s" % self.confFile)
 
+        # Set log level
+        node.cmd("sudo sed -i \'s|$LOG_LEVEL|%s|g\' %s" % (self.logLevel, self.confFile))
+
         # Open the conf file and change socket file name
         node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.confFile))
 
diff --git a/ndn_utils/nfd.conf b/ndn_utils/nfd.conf
index ffb1f5c..246dc78 100644
--- a/ndn_utils/nfd.conf
+++ b/ndn_utils/nfd.conf
@@ -25,7 +25,7 @@
   ;  TRACE ; trace messages (most verbose)
   ;  ALL ; all messages
 
-  default_level NONE
+  default_level $LOG_LEVEL
 
   ; You may override default_level by assigning a logging level
   ; to the desired module name. Module names can be found in two ways:
