root/scapy/error.py

Revision 862:52d055e522bd, 1.8 kB (checked in by Phil <phil@secdev.org>, 5 months ago)

Merged with one-file scapy

Line 
1 ## This file is part of Scapy
2 ## See http://www.secdev.org/projects/scapy for more informations
3 ## Copyright (C) Philippe Biondi <phil@secdev.org>
4 ## This program is published under a GPLv2 license
5
6
7 #############################
8 ##### Logging subsystem #####
9 #############################
10
11 class Scapy_Exception(Exception):
12     pass
13
14 import logging,traceback,time
15
16 class ScapyFreqFilter(logging.Filter):
17     def __init__(self):
18         logging.Filter.__init__(self)
19         self.warning_table = {}
20     def filter(self, record):       
21         from config import conf
22         wt = conf.warning_threshold
23         if wt > 0:
24             stk = traceback.extract_stack()
25             caller=None
26             for f,l,n,c in stk:
27                 if n == 'warning':
28                     break
29                 caller = l
30             tm,nb = self.warning_table.get(caller, (0,0))
31             ltm = time.time()
32             if ltm-tm > wt:
33                 tm = ltm
34                 nb = 0
35             else:
36                 if nb < 2:
37                     nb += 1
38                     if nb == 2:
39                         record.msg = "more "+record.msg
40                 else:
41                     return 0
42             self.warning_table[caller] = (tm,nb)
43         return 1   
44
45 log_scapy = logging.getLogger("scapy")
46 console_handler = logging.StreamHandler()
47 console_handler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
48 log_scapy.addHandler(console_handler)
49 log_runtime = logging.getLogger("scapy.runtime")          # logs at runtime
50 log_runtime.addFilter(ScapyFreqFilter())
51 log_interactive = logging.getLogger("scapy.interactive"# logs in interactive functions
52 log_loading = logging.getLogger("scapy.loading")          # logs when loading scapy
53
54
55 def warning(x):
56     log_runtime.warning(x)
57
Note: See TracBrowser for help on using the browser.