Statistics
| Branch: | Tag: | Revision:

root / kamaki / clients / commissioning / utils / debug.py @ 34f48ce0

History | View | Annotate | Download (2.7 kB)

1
#!/usr/bin/env python
2

    
3
# Copyright 2012 GRNET S.A. All rights reserved.
4
#
5
# Redistribution and use in source and binary forms, with or
6
# without modification, are permitted provided that the following
7
# conditions are met:
8
#
9
#   1. Redistributions of source code must retain the above
10
#      copyright notice, this list of conditions and the following
11
#      disclaimer.
12
#
13
#   2. Redistributions in binary form must reproduce the above
14
#      copyright notice, this list of conditions and the following
15
#      disclaimer in the documentation and/or other materials
16
#      provided with the distribution.
17
#
18
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
19
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
22
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
# POSSIBILITY OF SUCH DAMAGE.
30
#
31
# The views and conclusions contained in the software and
32
# documentation are those of the authors and should not be
33
# interpreted as representing official policies, either expressed
34
# or implied, of GRNET S.A.
35

    
36
import logging
37
from os import environ
38

    
39
_logger = None
40

    
41

    
42
def init_logger_file(name, level='DEBUG'):
43
    logger = logging.getLogger(name)
44
    handler = logging.FileHandler(name + '.log')
45
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
46
    handler.setFormatter(formatter)
47
    logger.addHandler(handler)
48
    level = getattr(logging, level, logging.DEBUG)
49
    logger.setLevel(level)
50
    global _logger
51
    _logger = logger
52
    return logger
53

    
54

    
55
def init_logger_stderr(name, level='DEBUG'):
56
    logger = logging.getLogger(name)
57
    from sys import stderr
58
    handler = logging.StreamHandler(stderr)
59
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
60
    handler.setFormatter(formatter)
61
    logger.addHandler(handler)
62
    level = getattr(logging, level, logging.DEBUG)
63
    logger.setLevel(level)
64
    global _logger
65
    _logger = logger
66
    return logger
67

    
68

    
69
def debug(fmt, *args):
70
    global _logger
71
    if _logger is None:
72
        init_logger_stderr('logger', get_level())
73
    _logger.debug(fmt % args)
74

    
75

    
76
def get_level(default='INFO'):
77
    try:
78
        return environ['DEBUG_LEVEL']
79
    except:
80
        return default