sources for logger.py [rev. unknown]
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class Message(object):
    def __init__(self, processor, *args): 
        self.content = args 
        self.processor = processor
        self.keywords = (processor.logger._ident, 
                         processor.name)
    def strcontent(self):
        return " ".join(map(str, self.content))
    def strprefix(self):
        return '[%s] ' % ":".join(map(str, self.keywords))
    def __str__(self):
        return self.strprefix() + self.strcontent() 
        
class Processor(object):
    def __init__(self, logger, name, consume): 
        self.logger = logger 
        self.name = name
        self.consume = consume 
    def __call__(self, *args): 
        try:
            consume = self.logger._override
        except AttributeError:
            consume = self.consume
        if consume is not None: 
            msg = Message(self, *args) 
            consume(msg) 
class Logger(object):
    _key2logger = {}
    def __init__(self, ident):
        self._ident = ident 
        self._key2logger[ident] = self 
        self._keywords = () 
    def set_sub(self, **kwargs): 
        for name, value in kwargs.items():
            self._setsub(name, value) 
    def ensure_sub(self, **kwargs): 
        for name, value in kwargs.items():
            if not hasattr(self, name):
                self._setsub(name, value) 
    def set_override(self, consumer):
        self._override = lambda msg: consumer(msg)
    def del_override(self):
        try:
            del self._override 
        except AttributeError:
            pass
    def _setsub(self, name, dest): 
        assert "_" not in name 
        setattr(self, name, Processor(self, name, dest))
def get(ident="global", **kwargs): 
    """ return the Logger with id 'ident', instantiating if appropriate """
    try:
        log = Logger._key2logger[ident]
    except KeyError:
        log = Logger(ident)
    log.ensure_sub(**kwargs)
    return log