diff --git a/scapy/config.py b/scapy/config.py
index fc39b826eeb042f389c97b48020e6ce1db9e214a..260019bd3991d1b02bdbb8147f5bc39059a7e667 100644
--- a/scapy/config.py
+++ b/scapy/config.py
@@ -7,12 +7,13 @@ import os,time
 from data import *
 import base_classes
 import arch,themes
+from error import log_scapy
 
 ############
 ## Config ##
 ############
 
-class ConfClass:
+class ConfClass(object):
     def configure(self, cnf):
         self.__dict__ = cnf.__dict__.copy()
     def __repr__(self):
@@ -170,6 +171,13 @@ class NetCache:
         return "\n".join(repr(c) for c in self._caches_list)
         
 
+class LogLevel(object):
+    def __get__(self, obj, otype):
+        return obj._logLevel
+    def __set__(self,obj,val):
+        log_scapy.setLevel(val)
+        obj._logLevel = val
+        
 
 class Conf(ConfClass):
     """This object contains the configuration of scapy.
@@ -203,6 +211,7 @@ extensions_paths: path or list of paths where extensions are to be looked for
     stealth = "not implemented"
     iface = arch.get_working_if()
     layers = LayersList()
+    logLevel = LogLevel()
     checkIPID = 0
     checkIPsrc = 1
     checkIPaddr = 1
@@ -244,5 +253,6 @@ extensions_paths: path or list of paths where extensions are to be looked for
     
 
 conf=Conf()
+conf.logLevel=30 # 30=Warning
 
 
diff --git a/scapy/main.py b/scapy/main.py
index cd83cf31ed40af61eb2a28377afc77b297b8f9b5..335423ed60ba1f521d7ce074a8d432569efa2b72 100644
--- a/scapy/main.py
+++ b/scapy/main.py
@@ -81,11 +81,13 @@ def scapy_write_history_file(readline):
                 warning("Cound not write history to [%s]. Discarded" % tmp)
 
 
-def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
+def interact(mydict=None,argv=None,mybanner=None,loglevel=20):
     global session
     import code,sys,cPickle,os,imp,getopt,logging,re
+    from config import conf
 
-    logging.getLogger("scapy").setLevel(loglevel)
+    if loglevel is not None:
+        conf.logLevel=loglevel
 
     the_banner = "Welcome to Scapy (%s)"
     if mybanner is not None:
@@ -147,9 +149,10 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
     STARTUP_FILE = DEFAULT_STARTUP_FILE
     PRESTART_FILE = DEFAULT_PRESTART_FILE
 
+
     iface = None
     try:
-        opts=getopt.getopt(argv[1:], "hs:Cc:Pp:")
+        opts=getopt.getopt(argv[1:], "hs:Cc:Pp:d")
         for opt, parm in opts[0]:
             if opt == "-h":
                 _usage()
@@ -163,6 +166,8 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
                 PRESTART_FILE = parm
             elif opt == "-P":
                 PRESTART_FILE = None
+            elif opt == "-d":
+                conf.logLevel = max(1,conf.logLevel-10)
         
         if len(opts[1]) > 0:
             raise getopt.GetoptError("Too many parameters : [%s]" % " ".join(opts[1]))
@@ -172,8 +177,6 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
         log_loading.error(msg)
         sys.exit(1)
 
-
-    from config import conf
     if PRESTART_FILE:
         _read_config_file(PRESTART_FILE)