1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# Colored log, requires Python 2.3 or up.
import sys
from distutils.log import *
from distutils.log import Log as old_Log
from distutils.log import _global_log
from misc_util import red_text, yellow_text, cyan_text, is_sequence, is_string
def _fix_args(args,flag=1):
if is_string(args):
return args.replace('%','%%')
if flag and is_sequence(args):
return tuple([_fix_args(a,flag=0) for a in args])
return args
class Log(old_Log):
def _log(self, level, msg, args):
if level>= self.threshold:
if args:
print _global_color_map[level](msg % _fix_args(args))
else:
print _global_color_map[level](msg)
sys.stdout.flush()
_global_log.__class__ = Log
def set_verbosity(v):
prev_level = _global_log.threshold
if v<0:
set_threshold(ERROR)
elif v == 0:
set_threshold(WARN)
elif v == 1:
set_threshold(INFO)
elif v >= 2:
set_threshold(DEBUG)
return {FATAL:-2,ERROR:-1,WARN:0,INFO:1,DEBUG:2}.get(prev_level,1)
_global_color_map = {
DEBUG:cyan_text,
INFO:yellow_text,
WARN:red_text,
ERROR:red_text,
FATAL:red_text
}
set_verbosity(1)
|