~ubuntu-branches/ubuntu/trusty/exabgp/trusty

« back to all changes in this revision

Viewing changes to lib/exabgp/log.py

  • Committer: Package Import Robot
  • Author(s): Henry-Nicolas Tourneur
  • Date: 2012-03-22 12:00:00 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20120322120000-v4aj8h69mhpmgbjq
Tags: 2.0.7-1

* New upstream release
* Fix bad clean target for build/ directory

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
1
# encoding: utf-8
3
2
"""
4
3
utils.py
5
4
 
6
5
Created by Thomas Mangin on 2009-09-06.
7
 
Copyright (c) 2009-2011 Exa Networks. All rights reserved.
 
6
Copyright (c) 2009-2012 Exa Networks. All rights reserved.
8
7
"""
9
8
 
10
9
import os
18
17
                self.prefix = prefix
19
18
                self.format = format
20
19
                self.message = message
21
 
        
 
20
 
22
21
        def __str__ (self):
23
22
                if self.format:
24
23
                        return self.prefix + self.format(self.message)
25
24
                return self.prefix + self.message
26
 
        
 
25
 
27
26
        def split (self,c):
28
27
                return str(self).split(c)
29
28
 
33
32
 
34
33
        _history = []
35
34
        _max_history = 20
36
 
        
 
35
 
37
36
        _config = ''
38
37
        _pid = os.getpid()
39
 
        
 
38
 
40
39
        # we use os.pid everytime as we may fork and the class is instance before it
41
40
 
42
41
        def config (self,config=None):
62
61
                return self._format(ts,level,source,message)
63
62
 
64
63
        def __init__ (self):
65
 
                if os.environ.get('DEBUG_ALL','0') == '0': self._all = False 
66
 
                else: self._all = True
67
 
 
68
64
                if os.environ.get('DEBUG_SUPERVISOR','1') in ['1','yes','Yes','YES']: self._supervisor = True
69
65
                else: self._supervisor = False
70
66
 
86
82
                if os.environ.get('DEBUG_RIB','0') == '0': self._rib = False
87
83
                else: self._rib = True
88
84
 
89
 
                if os.environ.get('DEBUG_TIMER','0') == '0': self._timers = False
90
 
                else: self._timers = True
91
 
 
 
85
                if os.environ.get('DEBUG_TIMER','0') == '0': self._timer = False
 
86
                else: self._timer = True
 
87
 
 
88
                if os.environ.get('DEBUG_ROUTE','0') == '0': self._routes = False
 
89
                else: self._routes = True
 
90
 
 
91
                # DEPRECATED, kept for compatibility in 2.0.x series
92
92
                if os.environ.get('DEBUG_ROUTES','0') == '0': self._routes = False
93
93
                else: self._routes = True
94
94
 
 
95
                if os.environ.get('DEBUG_PARSER','0') == '0': self._parser = False
 
96
                else: self._parser = True
 
97
 
 
98
                if not os.environ.get('DEBUG_ALL','0') == '0':
 
99
                        self._supervisor = True
 
100
                        self._daemon = True
 
101
                        self._processes = True
 
102
                        self._configuration = True
 
103
                        self._wire = True
 
104
                        self._message = True
 
105
                        self._rib = True
 
106
                        self._timer = True
 
107
                        self._routes = True
 
108
                        self._parser = True
 
109
 
 
110
                if not os.environ.get('DEBUG_CORE','0') == '0':
 
111
                        self._supervisor = True
 
112
                        self._daemon = True
 
113
                        self._processes = True
 
114
                        #self._configuration = True
 
115
                        #self._wire = True
 
116
                        self._message = True
 
117
                        #self._rib = True
 
118
                        self._timer = True
 
119
                        self._routes = True
 
120
                        self._parser = False
 
121
 
95
122
                destination = os.environ.get('SYSLOG',None)
96
123
                if destination is None:
97
124
                        return
115
142
                        self._syslog = logging.getLogger()
116
143
                        self._syslog.setLevel(logging.DEBUG)
117
144
                        self._syslog.addHandler(handler)
118
 
                except IOError,e :
 
145
                except IOError:
119
146
                        self.critical('Can not use SYSLOG, failing back to stdout')
120
147
 
121
148
        def debug (self,message,source='',level='DEBUG'):
124
151
                                self._syslog.debug(self._prefixed(level,source,line))
125
152
                        else:
126
153
                                print self._prefixed(level,source,line)
 
154
                                sys.stdout.flush()
127
155
 
128
156
        def info (self,message,source='',level='INFO'):
129
157
                for line in message.split('\n'):
131
159
                                self._syslog.info(self._prefixed(level,source,line))
132
160
                        else:
133
161
                                print self._prefixed(level,source,line)
 
162
                                sys.stdout.flush()
134
163
 
135
164
        def warning (self,message,source='',level='WARNING'):
136
165
                for line in message.split('\n'):
138
167
                                self._syslog.warning(self._prefixed(level,source,line))
139
168
                        else:
140
169
                                print self._prefixed(level,source,line)
 
170
                                sys.stdout.flush()
141
171
 
142
172
        def error (self,message,source='',level='ERROR'):
143
173
                for line in message.split('\n'):
145
175
                                self._syslog.error(self._prefixed(level,source,line))
146
176
                        else:
147
177
                                print self._prefixed(level,source,line)
 
178
                                sys.stdout.flush()
148
179
 
149
180
        def critical (self,message,source='',level='CRITICAL'):
150
181
                for line in message.split('\n'):
152
183
                                self._syslog.critical(self._prefixed(level,source,line))
153
184
                        else:
154
185
                                print self._prefixed(level,source,line)
 
186
                                sys.stdout.flush()
155
187
 
156
 
        # show the message on the wire 
 
188
        # show the message on the wire
157
189
        def wire (self,message):
158
 
                if self._wire or self._all:
 
190
                if self._wire:
159
191
                        self.debug(message,'wire')
160
192
                else:
161
193
                        self._record(time.localtime(),'wire','DEBUG',message)
162
194
 
163
195
        # show the exchange of message between peers
164
196
        def message (self,message):
165
 
                if self._message or self._all:
 
197
                if self._message:
166
198
                        self.info(message,'message')
167
199
                else:
168
200
                        self._record(time.localtime(),'message','info',message)
169
 
        
 
201
 
170
202
        # show the parsing of the configuration
171
203
        def configuration (self,message):
172
 
                if self._configuration or self._all:
 
204
                if self._configuration:
173
205
                        self.info(message,'configuration')
174
206
                else:
175
207
                        self._record(time.localtime(),'configuration','info',message)
176
208
 
177
209
        # show the exchange of message generated by the supervisor (^C and signal received)
178
210
        def supervisor (self,message):
179
 
                if self._supervisor or self._all:
 
211
                if self._supervisor:
180
212
                        self.info(message,'supervisor')
181
213
                else:
182
214
                        self._record(time.localtime(),'supervisor','info',message)
183
215
 
184
216
        # show the change of rib table
185
217
        def rib (self,message):
186
 
                if self._rib or self._all:
 
218
                if self._rib:
187
219
                        self.info(message,'rib')
188
220
                else:
189
221
                        self._record(time.localtime(),'rib','info',message)
190
222
 
191
223
        # show the change of rib table
192
224
        def timers (self,message):
193
 
                if self._timers or self._all:
 
225
                if self._timer:
194
226
                        self.info(message,'timers')
195
227
                else:
196
228
                        self._record(time.localtime(),'timers','info',message)
197
229
 
198
230
        # show the exchange of message generated by the daemon feature (change pid, fork, ...)
199
231
        def daemon (self,message):
200
 
                if self._daemon or self._all:
 
232
                if self._daemon:
201
233
                        self.info(message,'daemon')
202
234
                else:
203
235
                        self._record(time.localtime(),'daemon','info',message)
204
236
 
205
237
        # show the exchange of message generated by the forked processes
206
238
        def processes (self,message):
207
 
                if self._processes or self._all:
 
239
                if self._processes:
208
240
                        self.info(message,'processes')
209
241
                else:
210
242
                        self._record(time.localtime(),'processes','info',message)
211
243
 
212
 
        # show the exchange of message generated by the forked processes
 
244
        # show the exchange of message generated by the routes received
213
245
        def routes (self,message):
214
 
                if self._routes or self._all:
 
246
                if self._routes:
215
247
                        self.info(message,'route')
216
248
                else:
217
249
                        self._record(time.localtime(),'route','info',message)
218
250
 
 
251
        # show how the message received are parsed
 
252
        def parser (self,message):
 
253
                if self._parser:
 
254
                        self.info(message,'parser')
 
255
 
219
256
def Logger ():
220
257
        if _Logger._instance:
221
258
                return _Logger._instance
228
265
        logger.wire('wire packet content')
229
266
        logger.message('message exchanged')
230
267
        logger.debug('debug test')
231
 
        
 
268